2016-10-18 45 views
0

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

我使用此代码复选框,设置为不定,当窗体加载:

checkBox.CheckState = CheckState.Indeterminate; 

它的工作原理。

然后,当我点击复选框时,“CheckedChanged”事件触发,如果状态不确定,我不想做任何事情。 但它返回状态“选中”,而复选框显示为“不确定” ..

这里是我尝试检索复选框状态:

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

我没有找到解决的办法除了在WPF,但我使用Winforms ..

感谢您花时间帮助我。

+1

'ThreeState'属性设置为'true'? – Equalsk

+0

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

回答

1

我已将CheckBox控件与ThreeState属性设置为true
在我已将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; 
    } 
} 

显然不是的消息框,你将有你的代码。

+0

是的,我使用CheckChanged而不是CheckStateChanged,并且threeState属性未设置为true。我用你的代码,它的工作!谢谢 –