【问题标题】:Retrieve indeterminate state from checkbox Winforms从复选框 Winforms 中检索不确定状态
【发布时间】:2016-10-18 23:38:58
【问题描述】:

我正在使用 Winforms,但无法从复选框中检索不确定状态。 它总是返回“未选中”...

我使用此代码将复选框设置为在表单加载时不确定:

 checkBox.CheckState = CheckState.Indeterminate;

它有效。

然后,当我单击复选框时,“CheckedChanged”事件正在触发,如果状态不确定,我什么也不想做。 但它返回状态“未选中”,而复选框显示为“不确定”..

这是我尝试检索复选框状态的方法:

CheckBox c = sender as CheckBox;
  if (c.CheckState == CheckState.Indeterminate)
        {
            MessageBox.Show("Nope");
        }

除了在 WPF 中我没有找到解决方案,但我使用 Winforms..

感谢您花时间帮助我。

【问题讨论】:

  • ThreeState 属性设置为true?
  • 是的,这听起来像是第一次单击具有不确定值的三态复选框将其设置为 false。如果您希望在第一次单击时将其设置为 true,请尝试使用默认为 false 的两态复选框。

标签: c# winforms checkbox


【解决方案1】:

我添加了一个CheckBox 控件,其中ThreeState 属性设置为true
Form_Load 中,我已将CheckState 设置为CheckState.Indeterminate,方式与您相同。
我已订阅 CheckBox 上的 CheckStateChanged 事件。

我可以像这样得到 CheckState:

private void CheckStateChanged(object sender, EventArgs e)
{
    var checkbox = sender as CheckBox;

    switch (checkbox.CheckState)
    {
        case CheckState.Checked:
            MessageBox.Show("Checked");
            break;
        case CheckState.Unchecked:
            MessageBox.Show("Unchecked");
            break;
        case CheckState.Indeterminate:
            MessageBox.Show("Indeterminate");
            break;
        default:
            MessageBox.Show("Nothing");
            break;
    }
}

显然,您将拥有自己的代码,而不是 MessageBox。

【讨论】:

  • 是的,我使用的是 CheckChanged 而不是 CheckStateChanged,并且threeState 属性未设置为 true。我用了你的代码,它奏效了!谢谢
猜你喜欢
  • 2013-05-23
  • 1970-01-01
  • 2012-06-29
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 2020-06-23
相关资源
最近更新 更多