C# 应用程序在加载时读取错误的设置

Posted

技术标签:

【中文标题】C# 应用程序在加载时读取错误的设置【英文标题】:C# Application reads wrong settings on load 【发布时间】:2012-06-15 23:52:21 【问题描述】:

我有这个简单的评分者应用程序,我在其中使用设置。 为此,我创建了自己的属性设置文件。 到目前为止,一切都很好。这一切都很好。设置在那里,我可以使用它们。

我试图能够在运行时更改这些设置。 从它的外观来看,这也很有效。查看运行应用程序的用户下的应用程序的user.config,设置正在保存。 但是,下次我加载应用程序时,它似乎会忽略保存的设置并使用默认设置。 我可以再次更改设置并保存它们,结果相同。 user.config 正在更新,但旧的默认设置总是在加载时显示一次。

我将设置加载到 ListView 中。从那里更改值,然后循环遍历 ListView,再次保存设置。

这是我在 ListView 中加载设置的地方:(Properties.Main 是我创建的设置)

private void Settings_Load(object sender, EventArgs e)

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
    textBox1.Text = config.FilePath;

    foreach (SettingsProperty Setting in Properties.Main.Default.Properties)
    
        ListViewItem settingitem = new ListViewItem();

        settingitem.Text = Setting.Name.ToString();
        settingitem.SubItems.Add(Setting.DefaultValue.ToString());

        listView1.Items.Add(settingitem);

    
    listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);

这是我保存设置的地方。

private void button1_Click(object sender, EventArgs e)

    try
    
        foreach (ListViewItem setting in listView1.Items)
        
            Properties.Main.Default[setting.Text] = setting.SubItems[1].Text; ;
            Properties.Main.Default.Save();
        
    
    catch (Exception exp)
    
        MessageBox.Show(exp.Message);
    

据我所知,设置已按预期保存在user.config 文件中,但它不是下次加载的设置。

我的印象是,我需要做一些事情,以使应用程序不会每次都加载默认设置。

有什么想法吗?

【问题讨论】:

值得注意的是,Visual Studio 喜欢搞乱设置,所以如果这是您在将应用程序从开发环境中运行时遇到的问题,它可能只是其中的一个产物。 其实我一直在想。因此,它也经过测试。我在 3 台不同的电脑上测试过,没有一个使用保存的设置。 您在哪里更改设置值?根据您的代码,您再次设置先前的值 我认为为我制作的弹出窗口添加代码并不重要。单击 ListView 中的设置后,我会弹出一个窗口。在那里我更改了设置的值并将其应用于正确位置的 ListView。这是经过测试和工作的。当我循环列表项以保存它们时,我什至尝试显示设置结果。这显示了我的期望。 Properties.Main.Default[setting.Text] = setting.SubItems[1].Text; Properties.Main.Default.Save(); MessageBox.Show(Properties.Main.Default[setting.Text].ToString()); 你有想过这个吗?我遇到了完全相同的问题。 【参考方案1】:

您是否尝试过 ConfigurationManager.RefreshSection

【讨论】:

据我所知,如果设置没有写入磁盘存在问题,则使用此选项。然而,这种情况并非如此。也添加它,不幸的是没有帮助。

以上是关于C# 应用程序在加载时读取错误的设置的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中读取默认应用程序设置

C#动态加载dll 时程序集的卸载问题

读取数据时遇到 C# 致命错误

C# 运行的时候 报这个错误

C#程序嵌入Word窗口

Jpeg 在发布版本中使用 QImage 读取错误