Настройки приложения Visual Studio 2008 не сохранены? - PullRequest
0 голосов
/ 01 июня 2011

Я знаю:

Настройки приложения могут быть сохранены как любой тип данных, который можно сериализировать в формате XML или который имеет TypeConverter, который реализует ToString / FromString. Наиболее распространенными типами являются String, Integer и Boolean, но вы также можете сохранять значения как Color, Object или как строку подключения.

У меня есть настройка класса ListDictionary - которая сериализуема, но каждый раз, когда я снова запускаю свое приложение, она пуста, несмотря на создание, назначение и сохранение ListDictionary в моих настройках:

Properties.Settings.Default.Preferences = new System.Collections.Specialized.ListDictionary();
Properties.Settings.Default.Preferences.Add(1, "test");
Properties.Settings.Default.Save();

Как я могу использовать такой класс в качестве настройки приложения? Мне нужна коллекция словарных типов в качестве настройки ...

1 Ответ

1 голос
/ 01 июня 2011

Я хотел бы, чтобы вы попробовали несколько вещей.

  1. убедитесь, что вы создали область настроек как ПОЛЬЗОВАТЕЛЬ.

http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx добавить 2 строки (DictionaryKey и Dictionaryvalue) в настройки и установить область как пользовательскую, а значение пустым

  1. Настройки не содержатвозможность добавить словарь.Так что я бы посоветовал попробовать этот код

сделать 2 настройки sting и сделать это

Properties.Settings.Default.Dictionarykey = "";// To empty previous settings 
Properties.Settings.Default.Dictionaryvalue = "";// To empty previous settings 
for (int i = 0; i < yourdictionarycount; i++ )
{
Properties.Settings.Default.Dictionarykey += i + "#";  // or any other value                
Properties.Settings.Default.Dictionaryvalue += "test" + "#";  // or any other value                
}
Properties.Settings.Default.Save();

И когда вы получаете значения

, используйте этот код:

public Dictionary<int, string> savedsettings = new Dictionary<int, string>();

string[] eachkey = Properties.Settings.Default.Dictionarykey.Split('#');
string[] value = Properties.Settings.Default.Dictionaryvalue.Split('#');

for (int j = 0; j < eachkey.Length; j++)
{
  savedsettings.Add(eachkey[i], eachvalue[i]);
}
//just to check if the values are being retrieved properly 
Messagebox.Show(Properties.Settings.Default.Dictionarykey);

С уважением,

Вивек Сампара

...