2011-02-04 32 views
0

我有一个利用设置的Windows应用程序。我有一些用户可以手动设置的用户设置,它们被设置为用户范围。 save方法工作正常,但是如果应用程序关闭然后重新打开,则值将被重新设置为默认值。属性设置保存无法正常工作

这里是我的代码一个例子,以节省:

Properties.Settings.Default["LocalDefaultPrinter"] = Default_Printer; 
Properties.Settings.Default.Save(); 

可能是什么问题呢?

+0

是否在程序集所在的目录中生成了* .config`文件? – 2011-02-04 19:43:22

+0

你有这个属性范围作为应用程序或用户? – RQDQ 2011-02-04 19:44:19

回答

1

没想到每个人。我忘了我在代码中检查了用户设置的打印机是否与系统设置的打印机相同,如果没有,则将其更改为系统打印机。采取了这种方法,一切都很好。

3

我不知道这是否是问题,但我已经习惯了使用设计器生成的属性做:

Properties.Settings.Default.LocalDefaultPrinter = Default_Printer; 
Properties.Settings.Default.Save(); 

编辑:嗯,这不是问题 - 我能如果设置为“用户”范围,则可以使用您的方法节省罚款。但是,如果将此范围限定为“应用程序”,则无法保存该值,因为该值存储在application.config文件中(应用程序属性不会保存回.Save中的该文件)。

2

当您以编程方式更改用户设置时,您并未更改应用程序配置文件。您正在修改用户配置文件中与运行时与应用程序配置合并的那些设置的副本。

您是否检查过用户的配置文件文件夹中的更改设置?他们在吗?如果是这样,你的代码运行正常。

谢谢。 -Jason

0

应用程序作用域设置是只读的,而用户作用域设置是可读/写的。调用Save()将在应用程序会话之间保留用户范围设置。如果LocalDefaultPrinter是应用程序范围,则不会在会话之间持续存在。

This post提供了有关如何使用整个设置的信息。

2

除了这些可能性之外,请了解用户设置的范围是可执行文件的版本号。因此,如果您在调试过程中自动增加构建版本或更改内部版本号,则会丢失已由先前版本的应用程序更新的任何设置。

0

我刚刚在用户设置中遇到了一个特定键的类似问题。 为了解决这个问题,我尝试删除密钥并将其添加回来。最终解决方案中,我添加了一个新的密钥,并使用了一个新的名称。哑巴解决方案,但它的工作。

2

对于有WPF问题的人。

当您要使用您保存的设置时,请致电Settings.Default.Upgrade()以检索非默认值。

相关问题