Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 程序设置未更新_C#_Winforms - Fatal编程技术网

C# 程序设置未更新

C# 程序设置未更新,c#,winforms,C#,Winforms,我已经创建了我的c#winforms应用程序,并在properties、settings.settings中声明了一个字符串为“user”。当我第一次运行应用程序时,我可以使用以下代码成功地读取它: string user = Properties.Settings.Default.Username; 我可以为Username保存新值,并在代码中再次读取它们。但是,当我更改settings.settings中的值并启动程序进行调试(例如,将其更改为“NoLiver”)时,它不会使用新文本,它仍

我已经创建了我的c#winforms应用程序,并在properties、settings.settings中声明了一个字符串为“user”。当我第一次运行应用程序时,我可以使用以下代码成功地读取它:

string user = Properties.Settings.Default.Username;
我可以为Username保存新值,并在代码中再次读取它们。但是,当我更改settings.settings中的值并启动程序进行调试(例如,将其更改为“NoLiver”)时,它不会使用新文本,它仍然将其读取为“user”而不是“NoLiver”。我不明白为什么会发生这种情况,因为我的另一个程序没有这样做


有人能解释一下发生了什么事吗?我不确定您是否需要任何其他信息,但询问您是否需要任何信息。

可能发生的情况是,设置是用户范围的设置,而不是应用程序范围的设置。当您有一个用户范围设置时,“设置”中的值只是默认值,如果您运行程序,为用户生成了一个
User.config
文件,它将从
User.config
文件中读取当前值

您有两个选项,将
Username
更改为应用程序范围的设置或更改程序集的版本号,这将导致生成一个新的设置文件,并返回默认值(如果不希望返回默认值,请调用
Upgrade()
在您的设置类上执行一次,它将检查旧版本,并将设置从以前版本的程序复制过来)

编辑:您还有一个选项,如果这只是为了调试,请单击Settings.Settings中的
Synchronize
按钮,这将从硬盘中删除用户设置文件,并在下次运行程序时再次使用默认值


您正在调用
Properties.Settings.Default.Save()?我在代码期间保存它时会这样做,并且工作正常。我说的是,当我在visual studio中更改它时,程序没有运行它必须是用户自定义的,因为它可以在运行时更改(我还没有编写代码,因此尝试这样做),在这种情况下,您需要更改程序集的版本号,以便强制生成新的用户设置文件,那就不要在上面调用
Upgrade()
。如何更改版本号?我还需要它是1.0版,就像现在一样。还有其他方法吗?谢谢,但当我这么做时,我得到了“在以下任何位置都找不到user.config文件:”你是通过ClickOnce运行程序吗?我遇到了一个类似的问题,它没有删除clickonce应用程序的设置文件。您可能需要手动删除它,在程序运行时从程序中获取
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath的值,以查看必须删除的文件。删除该文件将执行单击“同步”将执行的操作。