2017-11-07 16 views
2

私は自分のプログラムで100以上のチェックボックスを持っていますので、Visual Studioで設定プロパティを手作業で作成せずにプログラムの状態を保存します。チェックボックスは、nummericUpDownBoxを含むユーザーコントロールにバインドされます。プログラムの再起動後に実行中に設定をプログラム的に作成してロードする方法。 C#

これは私がそれを保存する方法です:

 //Save Button Click 
    private void button2_Click(object sender, EventArgs e) 
    { 
     Settings.Default.Reset(); 

     foreach (Control c in panel1.Controls) 
     { 
      Settings.Default.Properties.Remove(c.Name); 
      Settings.Default.Properties.Remove(c.Name + "value"); 

      if ((c is checkNum) && Settings.Default.Properties[c.Name] == null) 
      { 
       SettingsProperty property = new SettingsProperty(c.Name); 
       property.DefaultValue = false; 
       property.IsReadOnly = false; 
       property.PropertyType = typeof(bool); 
       property.Provider = Settings.Default.Providers["LocalFileSettingsProvider"]; 
       property.Attributes.Add(typeof(UserScopedSettingAttribute), new UserScopedSettingAttribute()); 
       Settings.Default.Properties.Add(property); 
       Settings.Default[c.Name] = ((checkNum)c).Checked; 

       SettingsProperty property2 = new SettingsProperty(c.Name + "value"); 
       property2.DefaultValue = 2; 
       property2.IsReadOnly = false; 
       property2.PropertyType = typeof(int); 
       property2.Provider = Settings.Default.Providers["LocalFileSettingsProvider"]; 
       property2.Attributes.Add(typeof(UserScopedSettingAttribute), new UserScopedSettingAttribute()); 
       Settings.Default.Properties.Add(property2); 
       Settings.Default[c.Name + "value"] = Convert.ToInt32(((checkNum)c).Value); 
      } 


     } 
     Settings.Default.Save(); 
    } 

、それが保存され、私は再び設定を変更した場合、私は設定を復元することができます。 しかし、私がアプリケーションを閉じると、それは動作しません。アプリケーションの再起動が閉じられると、新しい設定が保存されません。 どうすれば設定を永久に保存できますか?私はそれをアプリケーションを再起動した後に読み込むことができるように。私は何をしなければならないのですか?私は、問題が正しいなった場合は、

 //Load Button Click 
    private void button4_Click(object sender, EventArgs e) 
    { 
     foreach (Control c in panel1.Controls) 
     { 
      if ((c is checkNum) && Settings.Default.Properties[c.Name] != null) 
      { 
       ((checkNum)c).Checked = (bool)Settings.Default[c.Name]; 
       ((checkNum)c).Value = (int)Settings.Default[c.Name + "value"]; 
      } 
     } 
    } 
+0

)。これはアプリケーションの設定に入るはずのようには聞こえません。 b。)デバッガ/再コンパイルせずに試してください。あなたは、(バージョン番号の変更などのために)アプリケーションを再コンパイルするときに常にユーザ定義の設定を新しいフォルダに入れるシステムにだまされるかもしれません。 – Ralf

+0

どのようにこれらの設定を読み込んでいますか? – BugFinder

+0

@ Ralf、私はすでにインストーラプロジェクトを作成し、アプリケーションをインストールしました。それは同じだ。 質問を編集し、設定を読み込む方法を追加します。 – Zer01

答えて

2

XMLまたはシンプルTXTなどの外部ファイルに設定を保存します。これは私が設定をロードする方法である

。 Programmを起動すると、保存された設定がプログラムによって読み込まれ(復元機能をコーディングする必要があります)、保存されているすべての設定が有効になります。

最も簡単な方法は、Streamreaderでこれを処理することです。

関連する問題