在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();
答案 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;
}
}