2009-06-06 70 views
1

我可能不是第一个面对这个问题的人,但我无法在任何地方找到正确答案。为什么ConnectionString设置的范围总是被强制为“Application”?

我有一个使用强类型DataSet的Windows窗体应用程序。设计人员使用应用程序设置中定义的连接字符串。问题是这个设置被定义为应用程序范围(因此是只读的),我需要能够在运行时更改它。在设置设计器中,如果设置的类型是“连接字符串”,则无法将范围更改为“用户”。生成的数据集不提供允许在运行时选择连接字符串的构造函数,它始终使用设置中的那个。

你知道MS为什么引入这个限制吗?你有任何解决方法?

我目前正在使用一个很丑的解决方法:将设置的类型更改为“String”,并将范围更改为“User”。这样,我可以在运行时更改它,并且工作正常。麻烦的是,当我需要修改设计器中的数据集时,必须将其更改回“ConnectionString”,否则设计器无法工作。

在此先感谢您的建议!

回答

4

可以在运行时更改ApplicationScope设置的值。虽然产生的强类型属性为只读,你可以使用:

Properties.Settings.Default["App1"] = "bbb"; 

之后,Properties.Settings.Default.App1将显示为“BBB”;

这应该可以让设计时间单独设置。

对于ApplicationScope设置,您不能使用Settings.Default.Save(),但这是故意的。普通用户没有权限在程序的子文件夹中写入 文件

+0

感谢您的回答。这是一个很好的解决方案,但Properties.Settings.Default.Save()不保存这个设置......我想我可以在别处手动保存它,并且当我的应用程序启动时总是覆盖它。 – 2009-06-06 14:14:23

相关问题