2012-06-13 67 views
2

我有這個評估者簡單的應用程序,我使用設置。 爲此,我創建了自己的屬性設置文件。 目前爲止這麼好。這一切都很好。設置在那裏,我可以使用它們。C#應用程序在加載時讀取錯誤的設置

我試圖能夠在運行時更改這些設置。從外觀上看,這也很好。查看運行該應用程序的用戶下的應用程序的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文件,但它是不是下一次裝載的一個。

我得到的印象是,我需要做的事情是爲了讓應用程序不要每次加載默認設置。

任何想法?

+0

值得注意的是,Visual Studio中喜歡惹設置,所以如果這是你運行應用程序時出了開發環境的它可能只是僞像你看到的問題。 – Yaur

+0

我實際上一直在想它。因此它也被測試。我已經在3臺不同的電腦上測試過它們,並且它們都沒有使用保存的設置。 – stallemanden

+0

你在哪裏改變設定值?根據你的代碼,你再次設置以前的值 – Damith

回答

0

你試過ConfigurationManager.RefreshSection

+0

從我能理解的情況來看,如果在設置沒有寫入磁盤時出現問題,就會使用它。 但是,情況並非如此。 也添加它,不幸的是沒有幫助。 – stallemanden

相關問題