在VB.net中,如何保存对app.config

时间:2015-05-20 23:20:58

标签: vb.net app-config appsettings

我的app.config文件中有几个appSettings,默认值为:

<appSettings>
  <add key="Foo" value="one"/>
  <add key="Bar" value="two"/>
</appSettings>

我能够读取并将值放入TextBox和ComboBox

我有这段代码来保存对这两项所做的更改,但我所做的更改并没有保存到app.config文件本身,因此当我关闭程序并再次打开它时,值会回到默认值

Private Sub ButtonSaveSettings_Click(sender As Object, e As EventArgs) Handles ButtonSaveSettings.Click
    Dim settings = System.Configuration.ConfigurationManager.AppSettings

    settings.Set("Foo", TextBoxFoo.Text)
    settings.Set("Bar", ComboBoxBar.SelectedItem.ToString)
End Sub

我需要做些什么才能让更新的值继续存在于app.config文件中?

(编辑:副本上的答案不是针对VB的,也没有解决这个问题。)

3 个答案:

答案 0 :(得分:4)

另一种方法是使用

My.Settings.Save()

在ButtonSaveSettings.Click事件中。否则,设置将无法保持

答案 1 :(得分:1)

我不需要通过将app.config文件更改为此来使用ConfirgurationManager(使用解决方案资源管理器 - &gt;我的项目 - &gt;设置)

<userSettings>
    <MyProject.My.MySettings>
        <setting name="Foo" serializeAs="String">
            <value>one</value>
        </setting>
        <setting name="Bar" serializeAs="String">
            <value>two</value>
        </setting>
    </MyProject.My.MySettings>
</userSettings>

我能够使用此代码保存设置的更新值

Private Sub ButtonSaveSettings_Click(sender As Object, e As EventArgs) Handles ButtonSaveSettings.Click
    My.Settings.Foo = TextBoxFoo.Text
    My.Settings.Bar = ComboBoxBar.SelectedItem.ToString
End Sub

答案 2 :(得分:0)

以上选项用于设置应用程序设置键。 我遇到了同样的问题,并使用以下代码解决了该问题

    Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

    config.AppSettings.Settings("yourKeyName").Value = YourNewValue        
    
    config.Save(ConfigurationSaveMode.Modified) 

    ConfigurationManager.RefreshSection("appSettings")

保存更改非常重要!!! 如果需要立即使用更新的值,则刷新是可选的(RefreshSection)