【问题标题】:Get checkBox unchecked state获取复选框未选中状态
【发布时间】:2013-05-31 23:53:42
【问题描述】:

我需要实现一个复选框以在启用/禁用某些控件的两种方法之间切换。我正在使用以下代码,我也尝试过其他方式但没有运气。

  private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {

                if (checkBox1.Checked)//this is working
                {
                    trackBar2.Enabled = false;
                    button3.PerformClick();
                    textBox8.Enabled = true;
                }

            else// this is supposed to work if checkbox is unchecked but doesn't work
            {
                trackBar2.Enabled = true;
                textBox8.Enabled = false;
            }
        }

我得到的结果总是一样的。如果我选中复选框,则满足第一个条件并且很好。如果我取消选中文本框,什么都不会发生,也不会回到第一个条件。 如何检测已选中/未选中的条件?

【问题讨论】:

  • 我更喜欢 Click 事件进行这种处理。
  • 你的 button3.PerformClick() 会改变复选框的状态吗?您是否曾经手动删除或添加复选框的事件?这似乎应该按原样工作,奇怪的是它没有
  • 您的原始代码对我有用...
  • @Idle_Mind,这很有趣。它不适合我!不过感谢您的测试。我按照 Vink 的回答解决了问题。

标签: c# if-statement checkbox user-controls


【解决方案1】:

你也可以这样写:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        trackBar2.Enabled = !checkBox1.Checked;
        textBox8.Enabled = checkBox1.Checked;
        if (checkBox1.Checked)
        {
            button3.PerformClick();
        }
    }

【讨论】:

    【解决方案2】:

    我认为你应该将if(checkBox1.Checked == false) 添加到 else 中:

     private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
    
            if (checkBox1.Checked)//this is working
            {
                    trackBar2.Enabled = false;
                    button3.PerformClick();
                    textBox8.Enabled = true;
            }
            else if(checkBox1.Checked == false)
            {
                trackBar2.Enabled = true;
                textBox8.Enabled = false;
            }
        }
    

    【讨论】:

    • 谢谢,这行得通。我很确定我试过了,但显然我没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多