2013-07-03 4 views
1

Вот вопрос:Checkbox не читает из настроек правильно

В моих настройках у меня есть два булевых называемых «check1_State» и «check2_State». Они должны контролировать мои два флажка всякий раз, когда форма загружается.

Вот код, когда форма нагрузок:

checkBox1.Checked = Properties.Settings.Default.check1_State; 
checkBox2.Checked = Properties.Settings.Default.check2_State; 

С этой части кода, только CheckBox1 будет прочитан. Если я прокомментирую первую строку, вторая будет работать нормально.

Мне удалось заставить его работать для установки таймера при загрузке формы, но я хотел сделать это правильно. Это показывает, что флажки могут, по сути, считываться из настроек, но, по-видимому, они не работают, если одновременно запрашиваются два или более.

Любая идея о том, почему это происходит?

+2

Вы пишете настройки в обработчике обработчика с измененным кодом? –

+0

Я. Опять же, он отлично работает, если .Checked = .check1_State; используется в таймере, он просто не работает, если он вводится в обработчик Form.Load. –

+0

Поместите отлажку на checkBox2.Checked = Properties.Settings.Default.check2_State; и посмотрите, правильно ли установлено состояние или нет. Если он установлен правильно, вы должны зарегистрировать проверочное событие изменения флажка2. Чтобы узнать, где он изменился после того, как вы его установили. Я подозреваю, что он изменился где-то еще в вашем коде. – Ehsan

ответ

0

Вы можете иметь флаг уровня формы для держать состояние погрузочных исходных данных

bool flag = false; 

Сохранить check1_State и check2_Stateтолько если выше флага true

в случае загрузки формы, установите флаг после загрузки данных из свойств

checkBox1.Checked = Properties.Settings.Default.check1_State; 
checkBox2.Checked = Properties.Settings.Default.check2_State; 
flag = true; 

Образец:

public partial class Form1 : Form 
{ 
    bool flag = false; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (flag) 
     { 
      //save settings 
     } 
    } 

    private void checkBox2_CheckedChanged(object sender, EventArgs e) 
    { 
     if (flag) 
     { 
      //save settings 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     checkBox1.Checked = Properties.Settings.Default.check1_State; 
     checkBox2.Checked = Properties.Settings.Default.check2_State; 
     flag = true; 
    } 
} 
+0

Работает как очарование! Большое спасибо. –

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