【问题标题】:using checkbox to enable textbox使用复选框启用文本框
【发布时间】:2013-12-30 11:00:36
【问题描述】:

我在这里有一个正在尝试制作的 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;
                    }

现在,当我将上面的代码放在页面加载函数中时,什么都不会发生,这肯定会发生,因为该函数仅在表单加载时调用。没有得到的是放置复选框代码的位置,以便我的文本框在运行时启用。其他功能是响应按钮,但我希​​望它在用户选中复选框时立即在运行时启用文本字段。请解释一下我将如何做到这一点!

【问题讨论】:

  • 尝试在复选框的检查更改事件中执行代码。
  • 使复选框的选中事件。

标签: c# winforms checkbox textfield


【解决方案1】:

你可以使用CheckStateChanged事件;因此,无论出于何种原因,checkBox1 被选中/取消选中/变灰,您都将正确启用/禁用 textBox1

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

【讨论】:

  • 不是 textBox1.Enabled = checkBox1.Checked;更好?
  • @Somachr:如果您不必处理 灰色 状态,那就是这样;由于问题中提到了CheckState.Indeterminate,我认为明确声明状态会更安全。
【解决方案2】:

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

不要将代码放在pageload 中,而是将该代码放在复选框的chekchange 事件中。

这会对你有所帮助。

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

【讨论】:

    【解决方案3】:

    将上面的代码放在处理复选框事件的函数中。 在您的情况下,它是 checkchanged 状态。

    【讨论】:

      【解决方案4】:

      你可以试试这个:

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

      【讨论】:

        【解决方案5】:

        我混合了上述一些答案,并且效果很好。我希望在加载表单时禁用按钮的状态,但如果用户选中一个框,然后启用,代码如下:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-15
          • 2013-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多