2013-12-12 3 views
0

У меня есть приложение здесь, в winforms, которое я пытаюсь сделать. Вот как я хочу, чтобы это произошло: всякий раз, когда пользователь нажимает кнопку регистрации, регистрационная форма должна открываться. работает отлично. здесь есть функция, которая называется в этом случае:, используя флажок, чтобы включить текстовое поле

private void Register_Visitor_Load(object sender, EventArgs e) 

В этой форме у меня есть текстовое поле, которое помещается я хочу, чтобы отключить при загрузке формы. я написал строку, которая отключает текстовое поле на форме нагрузки:

textbox1.enabled = false; 

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

CheckState state = checkBox1.CheckState; 
      switch (state) 
      { 
       case CheckState.Checked: 
        { 
         textBox1.Enabled = true; 
         break; 
        } 
       case CheckState.Indeterminate: 
       case CheckState.Unchecked: 
        { 
         break; 
        } 

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

+0

попробуйте сделать код в чеке измененного события флажка. –

+0

сделать отметку в поле флажка. –

ответ

7

Вы можете использовать событие CheckStateChanged; поэтому какой-либо причине checkBox1 проверяется/бесконтрольно/серым цветом вы будете иметь textBox1 правильно включен/выключен

private void checkBox1_CheckStateChanged(object sender, EventArgs e) { 
    textBox1.Enabled = (checkBox1.CheckState == CheckState.Checked); 
} 
+0

хорошая оптимизация –

+0

Isn't textBox1.Enabled = checkBox1.Checked; даже лучше? – Somachr

+0

@Somachr: это будет, если вам не нужно иметь дело с * серыми * состояниями; так как в вопросе упоминается 'CheckState.Indeterminate', я думаю, будет безопаснее объявить об освобождении штата. –

0

Выводить код на ошибочном сайте.

Вместо того, чтобы размещать в pageload введите этот код на chekchange событие checkbox.

Это поможет вам.

private void chkDisable_CheckedChanged(object sender, EventArgs e) 
{ 
     if (((CheckBox)sender).Checked) 
     { 
      textBox1.Enable=true; 
     } 
     else 
     { 
      textBox1.Enable=false; 
     } 
} 
0

Поместите код выше внутри функции, которая обрабатывает событие для флажка. В вашем случае это checkchanged статус.

0

Вы можете попробовать это:

private void checkBox1_Click(object sender, EventArgs e) 
{ 

     if (checkBox1.Checked) 
     { 
      textBox1.Enabled = false; 
     } 
     else 
     { 
      textBox1.Enabled = true; 
     } 
} 
0

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

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     button1.Enabled = (checkBox1.CheckState == CheckState.Checked); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked) 
     { 
      button1.Enabled = true; 
     } 
     else 
     { 
      button1.Enabled = false; 
     } 


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