2013-12-12 28 views
0

我有一个应用程序在这里试图使winforms。这就是我希望它发生的原因:每当用户点击注册访问者按钮时,注册表格应该打开。工作正常。这里是被称为在这种情况下,功能:使用复选框来启用文本框

private void Register_Visitor_Load(object sender, EventArgs e) 

在这种形式我有一个文本框放在我希望在禁用加载窗体。我写了一行禁用表单加载的文本框:

textbox1.enabled = false; 

我把上面的行放在加载函数工作正常。现在我想根据选中的复选框启用我的textbox1。为了这个,我写的代码:

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

不是textBox1.Enabled = checkBox1.Checked;甚至更好? – Somachr

+0

@Somachr:如果你不需要处理灰色*状态,既然'CheckState.Indeterminate'已经在问题中提到过了,我认为将状态直接声明是更安全的。 –

0

您正在将代码放在错误的事件中。

而不是在pageload将代码放在chekchange事件的复选框上。

这将帮助你。

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; 
     } 


    }