【问题标题】:change checkbox by another checkbox inside the event通过事件内的另一个复选框更改复选框
【发布时间】:2017-04-07 17:05:26
【问题描述】:

在一个 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 实际上是启用还是禁用),其中 checkedstate 有第三个选项未确定(用户没有触摸控件)。

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

【问题讨论】:

    标签: c# winforms checkbox


    【解决方案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();   
                }
            }
    

    【讨论】:

    • CheckState 未使用?为什么不省略?
    • 检查状态确实是错误的,但是问题接缝出现在 cbDenoise 中。在 cbCalibrate 事件中显示它不会更新。
    • 哦,废话...我看到问题了,我的咖啡用完了
    • “我看到了问题”,问题,cbDenoise.show 工作,但在同一事件中,它被禁用和启用,而实际上我应该查看 cbCalibrate 的状态,(如果那个被选中,然后禁用另一个)您的代码也可以正常工作。
    【解决方案2】:

    使用这个简单的模板:

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

    【讨论】:

      【解决方案3】:

      这会解决你的问题

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        • 1970-01-01
        • 2023-03-13
        • 2019-06-08
        • 2011-08-30
        • 2012-06-26
        相关资源
        最近更新 更多