2013-07-29 41 views
2

我是winforms的初学者,刚开始使用它的偏好。Winforms偏好值

因此,我在我的Settings.settings中添加一个名为path的值,作为字符串和用户范围。

更改它,当我选择了FolderBrowserDialog,然后一个新的路径,在OK按钮点击后,我改变首选项是这样的:

private void buttonPref_Click(object sender, EventArgs e) 
     { 
      Form2 subForm2 = new Form2(textBoxRep.Text); 
      subForm2.ShowDialog(); 

      if (subForm2.DialogResult == DialogResult.OK) 
      { 
       Settings.Default.path= subForm2.rep(); 
       subForm2.Close(); 
      } 
      else 
      { 
       subForm2.Close(); 
      } 
     } 

      public string rep() 
      { 
       return textBoxRep.Text; 
      } 

然后,当我跑我的应用程序,我在我的偏好设置中加载该值:

textBoxRep.Text = Settings.Default.path; 

但是,每次新运行后,该值都设置为空。

所以,我试图用的应用范围,但我得到了这个只读错误:Settings.Default.path

我该如何解决这个问题?有什么方法可以在对它们进行虚拟化后注册设置?

谢谢。

+0

你打电话Settings.Default.Save()在任何地方以保存设置到配置文件? –

+1

另外值得注意的是,如果您在VS中运行,每次重新运行应用程序时,配置文件都会被写入。 –

+0

感谢您的精确度。 –

回答

4

你需要调用保存方法如下

Settings.Default.path= subForm2.rep(); 

Settings.Default.Save(); 

设置是应用程序范围内是只读的,并且只能在设计时或通过改变config文件中之间 改变 应用程序会话。但是,用户范围的设置可以在运行时写入 ,就像更改任何属性值一样。 新值在应用程序会话期间持续存在。 通过调用Save方法,您可以在应用程序会话 之间持续更改设置。

How To: Write User Settings at Run Time with C#

+0

谢谢。完整答案。奇怪的是,当我第一次尝试时,.Save()没有出现。但重新打开Visual Studio后,它就是这样。 –