2011-07-02 13 views
3

アプリケーション設定としてStringCollectionを使用したいと思いますが、それを読んでいる間は設定が保存されていないことがわかりました。アプリケーション設定のStringCollectionが保存されません

どのようにするには?回避策はありますか?ここで何が問題なの?

private static void AddToRecentProfiles(string path) 
    { 
     if (SpellCaster3.Properties.Settings.Default.RecentProfiles == null) 
      SpellCaster3.Properties.Settings.Default.RecentProfiles = new StringCollection(); 

     int index = SpellCaster3.Properties.Settings.Default.RecentProfiles.IndexOf(path); 
     if (index >= 0) 
      SpellCaster3.Properties.Settings.Default.RecentProfiles.Swap(index, 0); 
     else 
      SpellCaster3.Properties.Settings.Default.RecentProfiles.Insert(0, path); 

     if (SpellCaster3.Properties.Settings.Default.RecentProfiles.Count > SpellCaster3.Properties.Settings.Default.MaxRecentProfiles) 
      SpellCaster3.Properties.Settings.Default.RecentProfiles.RemoveAt(SpellCaster3.Properties.Settings.Default.RecentProfiles.Count - 1); 

     SpellCaster3.Properties.Settings.Default.Save(); 

     OnRecentProfilesChanged(SpellCaster3.Properties.Settings.Default.RecentProfiles, EventArgs.Empty); 
    } 
+0

コードは何ですか? – svick

+0

誰かが別の質問についてここに書いたコメントはどこにありますか?私はそれがおそらく私の問題の答えだと思いますが、誰かがそれを削除しました:\ –

+0

変数に 'SpellCaster3.Properties.Settings.Default.RecentProfiles'を入れるコードをリファクタリングしたいかもしれません。 – svick

答えて

10

自分で解決策を見つけましたが、問題は "新しい"キーワードと保存設定でStringCollectionを作成しても保存されないということです。

これを修正する方法は、アプリケーション設定デザイナーが作成するように強制することです。どのように行うのですか?まあそれはかなり簡単です、stringcollectionを型として入れ、2/3文字列を挿入します。 OKを押します。次にこの値をもう一度編集し、すべての文字列を削除して「作成済みだが空のまま」にします。

この後、文字列を追加/削除して設定を保存するだけで使用できます。そしてあなたはそれがヌルでないことを確信します!

+0

賢いアイデア! –

5

Application settingsは、アプリケーションレベルで、ユーザーレベルでスコープすることができ、あなたが唯一のユーザレベルでの設定に書き込むことができるので、あなたが持っている場合StringCollectionはでスコープ:

コード私が使用していますコンパイル時に定義した値と実行時にコレクションに追加する値だけを読み取ることができるアプリケーションレベルは、次にアプリケーションを起動しても効果がありません。

アプリケーション実行間で変更を反映させる場合は、ユーザーレベルでスコープを設定できます。

+0

私はそれらをユーザーレベルで持っていますが、これは問題の問題ではありません –

+0

あなたはそれらをユーザーレベルで持っていますか? –

+0

"アプリケーションの設定は保存されていません"と"アプリケーション設定を保存できません" –