2016-07-15 33 views
0

我正在Windows框架上的c#中制作视频转换器。 我想保存加载的文件,用户添加&如果它退出应用程序我想存储该文件,并再次运行应用程序时加载。 如何做到这一点。 ??给我想法如何做到这一点。保存程序状态并再次加载

+1

[在程序重新启动之间保存状态]的可能重复(http://stackoverflow.com/questions/7522228/saving-state-between-program-restarts) – Sinatr

回答

-1

您可以创建一个设置类,其中包含先前加载,然后退出它序列化到磁盘并开始反序列化的文件列表。

+0

你可以给它一点演示关于它的任何相关链接。 –

+0

不要这样做。该框架为你做了这一切。 –

+0

框架的问题是,有时如果更新应用程序,设置可能会丢失。但是,确定你可以先尝试内置的解决方案 –

0

您需要使用用户设置。在Visual Studio中打开项目属性,然后单击“设置”选项卡。您可以通过输入设置名称,选择从下拉列表框的类型System.Collections.Specialized.StringCollection,然后将其定义为用户范围设置添加一个新用户设置System.Collections.Specialized.StringCollection类型。

如果您忘记将其设置为用户设置并创建应用程序设置,它将是只读的,您将无法更改它。只有用户设置可以更改。

这会显得你的代码字符串一样的普通列表。您可以在添加新值等,并保存它是这样的:

当然你也可以遍历喜欢的条目:

foreach (string s in Properties.Settings.Default.[Setting name you chose]) 
    .... 

的好处是,你不需要关心设置的存储位置和方式。 .NET为你做了这一切。


背景:创建设置会将它们添加到app.config文件中。当您编译为[exename].exe.config时,此文件将被复制到输出目录中。当应用程序启动时,框架将从那里读取应用程序设置。用户设置将从那里读取,或者(如果您更改并保存它们)从驻留在用户应用程序数据目录某处的副本中读取。

不要,我再说一遍:尝试直接从您的代码修改.exe.config文件,但始终使用如我上述自动为您生成的属性。

+0

我发现一般的串的集合是不是帮助更多的麻烦,我不实现IEnumerable 直接与一些比较有用的LINQ的扩展意味着它的不兼容,导致相当多的膨胀在你的设置文件。我只会推荐它,当你存储难以分割的复杂字符串时,或者只是使用字符串 – MikeT

+0

是的,但是对于OP的目的来说它是完美的。他需要存储一个文件列表(我猜:文件名?)。可能他内部有一个文件列表,所以重新加载这些文件是一个简单的for循环。我怀疑能够使用LINQ胜过了分割包含所有文件名的字符串的痛苦......此外,尽管LINQ可能是一个很好的工具,但是我们在5年前才能编写它。你仍然可以写循环,你知道吗?但这是一个不同的讨论:-)至于臃肿的设置文件:谁在乎文件是1K还是2K甚至10K? –

相关问题