Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过事件内的另一个复选框更改复选框_C#_Winforms_Checkbox - Fatal编程技术网

C# 通过事件内的另一个复选框更改复选框

C# 通过事件内的另一个复选框更改复选框,c#,winforms,checkbox,C#,Winforms,Checkbox,在winforms应用程序中,我遇到了一种情况。 选中某个复选框时,应禁用该复选框。 我知道这不是一个理想的设计,但目前很大程度上取决于此,因此我想知道如何使下面的代码工作,因为这将是对大型代码库的最小更改 private void cbCalibrate_CheckedChanged(object sender, EventArgs e) { CheckState CalibrationBussy; CalibrationBussy = cbDenoise.CheckState

在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,但问题仍然存在。(如已选中,实际启用vs已禁用),其中checkedstate有一个未确定的第三个选项(用户未触摸控件)


使用以下简单模板:

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

那会解决你的问题

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

检查状态未使用?为什么不忽略?检查状态确实是错误的,但是问题可能在cbDenoise中。显示它在cbCalibrate事件中不更新。哦,糟糕。。。我看到了问题,我用完了咖啡“我看到了问题”,问题cbDenoise.show起了作用,但在同一事件中,它被禁用和启用,而实际上我应该查看cbCalibrate的状态(如果一个被选中,那么禁用另一个),您的代码也可以这样工作。
public void cbCalibrate_CheckedChanged(object sender, EventArgs e)
{
checkBox1.Enabled = checkBox2.Checked;
}
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;
    }
}