通过事件

时间:2017-04-07 08:31:55

标签: c# winforms checkbox

在winforms应用程序中,我有一个情况。 选中某个复选框时,应禁用该复选框。 我知道它不是一个理想的设计,但目前相当多依赖于此,所以我想知道如何使下面的代码工作,因为这将是对大型代码库的最小改动。

private void cbCalibrate_CheckedChanged(object sender, EventArgs e)
{
    CheckState CalibrationBussy;
    CalibrationBussy = cbDenoise.CheckState;
    cbDenoise.Checked = false;
    cbDenoise.Show();                      // the cbDenoise checkbox doesnt change
    cbDenoise.CheckState = CalibrationBussy;
    cbDenoise.Show();
}

更新我应该使用Checked而不是checkstate,但仍然存在问题。 (因为Checked实际上是启用vs禁用),其中checkstate有第3个选项未确定(用户没有触摸控件)。

        bool CalibrationBussy;
        CalibrationBussy = cbDenoise.Checked;
        cbDenoise.Checked =false;
        cbDenoise.Show();
        cbDenoise.Checked = CalibrationBussy;
        cbDenoise.Show();

3 个答案:

答案 0 :(得分:1)

 public void cbCalibrate_CheckedChanged(object sender, EventArgs e)
        {
            CheckState CalibrationBussy;
            SatusBeforeCalibrating = cbDenoise.CheckState;
            if ( cbDenoise.Checked == true)
            {
                account = "Active";
                cbDenoise.Show();   
            }
            else if ( cbDenoise.Checked  == false)
            {
                account = "Deactive";
              cbDenoise.Show();   
            }
        }

答案 1 :(得分:0)

使用这个简单的模板:

public void cbCalibrate_CheckedChanged(object sender, EventArgs e)
{
checkBox1.Enabled = checkBox2.Checked;
}

答案 2 :(得分:0)

这将解决您的问题

CheckState Before;
private void cbCalibrate_CheckedChanged(object sender, EventArgs e)
{
    if(cbCalibrate.Checked == true)
    {
    Before = cbDenoise.CheckState;
    cbDenoise.Enabled = false;
    cbDenoise.Checked = false;
    }
    if(cbCalibrate.Checked == false && Before = true)
    {
        cbDenoise.Checkd = true
        cbDenoise.Enabled = true;
    }
}