我不是在谈论一个事件处理程序,而是一个简单的If Statement
检查是否已检查CheckBox
。到目前为止,我有:
if (chkRevLoop.IsChecked == true){}
但这引发了错误:
无法隐式转换类型' bool?'到了布尔'。存在显式转换(您是否错过了演员?)
有没有办法解决这个问题?
答案 0 :(得分:26)
您可以使用null coalescing operator。如果左侧操作数为空,则此运算符返回右侧操作数。因此,当false
处于indeterminate状态时(CheckBox
属性的值设置为null),您可以返回IsChecked
:
if (chkRevLoop.IsChecked ?? false)
{
}
答案 1 :(得分:6)
您必须执行从bool?
到bool
的转换才能使其正常运行:
if((bool)(chkRevLoop.IsChecked)){}
因为它已经是一个bool
条件你不需要把它设为true,因为如果它是真的那么只有它才会进入这个条件,否则不会。
所以,不需要在chkRevLoop.IsChecked == true
放置,默认情况下,您通过puttin ==true
IsChecked
答案 2 :(得分:4)
答案 3 :(得分:4)
考虑检查属性是否有值:
var isChecked = chkRevLoop.IsChecked.HasValue ? chkRevLoop.IsChecked : false;
if (isChecked == true){}
答案 4 :(得分:3)
bool?
可以是true,false或null,而bool
只能是true或false。 ?
使一个类型为“可空”并且在通常不存在的情况下添加null,因此您可以使用
if ((bool)chkRevLoop.IsChecked == true){}
或
if (chkRevLoop.IsChecked == (bool?)true){}
使其匹配并正常工作。第二个可能更好,因为我不知道如果IsChecked为空,会在演员阵容中发生什么
答案 5 :(得分:2)
new public void ClipboardPaste()
{
_imageCounter = 0;
string current = C1.Silverlight.Clipboard.GetHtmlData();
// ... as posted above
}
属性是Nullable boolean。
IsChecked
创建一个Nullable布尔值并等同它将适合您。
public bool? IsChecked { get; set; }
答案 6 :(得分:2)
一行足以检查单选按钮是否被选中:
string status = Convert.ToBoolean(RadioButton.IsChecked) ? "Checked" : "Not Checked";
答案 7 :(得分:1)
您应该使用Nullable对象。因为IsChecked属性可以分配给三个不同的值:Null,true和false
Nullable<bool> isChecked = new Nullable<bool>();
isChecked = chkRevLoop.IsChecked;
if (isChecked.HasValue && isChecked.Value)
{
}