C # Как перебрать Properties.Settings.Default.Properties, изменяя значения - PullRequest
18 голосов
/ 03 мая 2011

У меня есть следующий код:

foreach (SettingsProperty currentProperty in Properties.Settings.Default.Properties)
{
    if (Double.TryParse(GenerateValue()), out result))
    {
        currentProperty.DefaultValue = result.ToString();

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

Он получает новое значение из базы данных mysql.Если я добавлю MessageBox.Show, чтобы показать новое значение, оно, кажется, работает нормально, но на самом деле не сохраняет его.Я предполагаю, что это потому, что я присваиваю значение переменной ... есть ли способ сделать это?

Properties.Settings.Default.IndexOf(currentProperty.name).DefaultValue = result

Ответы [ 2 ]

27 голосов
/ 03 мая 2011

Это может работать:

foreach (SettingsProperty  currentProperty in Properties.Settings.Default.Properties)
{
    Properties.Settings.Default[currentProperty.Name] = result.ToString();
    Properties.Settings.Default.Save();
}

Имейте в виду, что свойства должны иметь область действия «Пользователь», чтобы их можно было сохранить.

2 голосов
/ 03 мая 2011

Я бы согласился с вашим выводом.То, что вы собираетесь сделать, это получить свойство по строковому значению.

Properties.Settings.Default[string value] =

    foreach (SettingsProperty currentProperty in Properties.Settings.Default.Properties) 
    {    
    if (Double.TryParse(GenerateValue()), out result))  
       {        

Properties.Settings.Default[ currentProperty.Name ] = result.ToString();
          Properties.Settings.Default.Save(); 
        } 
    } 

Выше действительно то, что вы на самом деле хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...