WPF复选框检查IsChecked
我不是在谈论一个事件处理程序,而是一个简单的If Statement
检查CheckBox
是否已被选中。 到目前为止我有:
if (chkRevLoop.IsChecked == true){}
但这引发了错误:
无法隐式转换类型’bool?’ ‘bool’。 存在显式转换(您是否错过了演员?)
有没有办法做到这一点,我错过了?
您可以使用null合并运算符 。 如果左侧操作数为空,则此运算符返回右侧操作数。 因此,当CheckBox
处于不确定状态时(当IsChecked
属性的值设置为null时),您可以返回false
:
if (chkRevLoop.IsChecked ?? false) { }
你必须从bool?
做这个转换bool?
bool
,使它工作:
if((bool)(chkRevLoop.IsChecked)){}
因为它已经是一个bool
条件你不需要设置真假,因为如果它是真的那么只有它会进入这个条件,否则不会。 所以,甚至不需要在这里放chkRevLoop.IsChecked == true
,你默认通过puttin IsChecked
询问==true
考虑检查属性是否具有值:
var isChecked = chkRevLoop.IsChecked.HasValue ? chkRevLoop.IsChecked : false; if (isChecked == true){}
已有多个答案,但这是另一种选择
if (chkRevLoop.IsChecked.GetValueOrDefault()) {}
来自MSDN
一个bool?
可以是true,false或null,而bool
只能是true或false。 ?
使一个类型为“可空”并且在通常不存在的情况下添加null,因此您可以使用它
if ((bool)chkRevLoop.IsChecked == true){}
要么
if (chkRevLoop.IsChecked == (bool?)true){}
使它匹配和工作。 第二个可能更好,因为如果IsChecked为null,我不知道在演员阵容中会发生什么
CheckBox的IsChecked
属性是Nullable boolean。
public bool? IsChecked { get; set; }
创建一个Nullable布尔值并等同它将适合您。
码
bool? NullableBool = chkRevLoop.IsChecked; if(NullableBool == true) { }
你应该使用Nullable对象。 因为IsChecked属性可以分配给三个不同的值:Null,true和false
Nullable isChecked = new Nullable (); isChecked = chkRevLoop.IsChecked; if (isChecked.HasValue && isChecked.Value) { }
一行就足以检查单选按钮是否被选中:
string status = Convert.ToBoolean(RadioButton.IsChecked) ? "Checked" : "Not Checked";