2014-07-04 4 views
0

У меня есть сегмент кода, чтобы сохранить состояние флажков, которое будет запускаться, когда пользователь закрывает форму. Все работает нормально, но нет файла сгенерированного файла (файл user.config не генерируется). Это мой первый раз, используя настройки сохранения, поэтому я не уверен, что я делаю это неправильно или что-то не хватает.Сохранение пользовательских настроек [winforms] 2.0 не работает

private void Form2_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     int i = 0; 
     foreach (Control ctr in panel1.Controls) 
     { 
      if (ctr is CheckBox) 
      { 
       var cb = (CheckBox)ctr; 

       SettingsProperty property = new SettingsProperty("ChkState" + i); 
       property.PropertyType = typeof(System.Windows.Forms.CheckState); 
       SettingsPropertyValue propertyValue = new SettingsPropertyValue(property); 
       propertyValue.PropertyValue = cb.CheckState; 
       Properties.Settings.Default.PropertyValues.Add(propertyValue); 
       i++; 
      } 
     } 

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

Вы читаете http://msdn.microsoft.com/en-us/library/aa730869%28v=vs.80%29.aspx? –

+0

Коротко ........ – Ejun

+0

Это по дизайну свойства, хранящиеся в файле .config, объявляются в файле app.exe.config. Конечно, вас там нет. Добавьте параметр в проект, который может сохранять эти значения. Тип коллекции, такой как ArrayList. –

ответ

1

Как было предложено, вы не создаете настройки во время выполнения и не сохраняете их. Настройки должны уже существовать, и вы просто сохраняете их значения. Добавьте настройку соответствующего типа на странице настроек свойств проекта, а затем получите значение этого параметра при запуске и сохраните его при завершении работы.

Есть ли конкретная причина, по которой вы используете CheckState, а не Checked? Могут ли ваши CheckBox элементы управления находиться в состоянии Indeterminate? Если нет, то вы не должны использовать CheckState. Вы используете Checked, чтобы определить, установлен ли флажок.

Если вы можете использовать Checked, то вы можете использовать один int, чтобы сохранить состояние до 32 CheckBox элементов управления. Каждый из 32-битов может быть 1, чтобы указать true, то есть проверено или 0, чтобы указать false, то есть непроверено.

Конечно, вы также можете использовать индивидуальные настройки типа bool и привязать их к своим Checked объектам. Таким образом, нет необходимости перемещать данные вперед и назад между настройками и элементами управления. Вы просто вызываете Save при выключении, и все остальное происходит автоматически.

+0

Спасибо, я думаю, у меня есть идея – Ejun

Смежные вопросы