web-dev-qa-db-ja.com

WPFチェックボックスチェックIsChecked

私はこのためのイベントハンドラーではなく、単純なIf StatementCheckBoxがチェックされたかどうかをチェックします。これまでのところ:

if (chkRevLoop.IsChecked == true){}

しかし、それはエラーを発生させます:

型「bool」を暗黙的に変換できませんか? 「ブール」に。明示的な変換が存在します(キャストを見逃していますか?)

私が見逃しているこれを行う方法はありますか?

24
hereiam

null合体演算子 を使用できます。この演算子は、左側のオペランドがヌルの場合、右側のオペランドを返します。したがって、falseindeterminate 状態にあるときにCheckBoxを返すことができます( IsCheckedプロパティの値はnullに設定されます):

if (chkRevLoop.IsChecked ?? false)
{

}
30
Salah Akbari

これを機能させるには、bool?からboolへの変換を行う必要があります。

if((bool)(chkRevLoop.IsChecked)){}

既にbool条件であるため、trueを設定する必要はありません。trueの場合は、条件内にない場合にのみこの内部に入るからです。したがって、chkRevLoop.IsChecked == trueをここに配置する必要はありません。デフォルトでは、puttin IsCheckedによって==trueを要求しています。

6
DeshDeep Singh

すでに複数の回答がありますが、ここに別の選択肢があります

if (chkRevLoop.IsChecked.GetValueOrDefault()) {}

[〜#〜] msdn [〜#〜] から

4
tier1

プロパティに値があるかどうかを確認することを検討してください。

var isChecked = chkRevLoop.IsChecked.HasValue ? chkRevLoop.IsChecked : false;

if (isChecked == true){}
4
Hughnited

bool?はtrue、false、またはnullにできますが、boolはtrueまたはfalseにしかできません。 ?は、型を「null可能」にし、通常はそうではない可能性としてnullを追加します。

if ((bool)chkRevLoop.IsChecked == true){}

または

if (chkRevLoop.IsChecked == (bool?)true){}

それが一致して動作するようにします。 IsCheckedがnullの場合、キャストで何が起こるかわからないため、2番目の方法の方がおそらく優れています。

3
MichaelN

CheckBoxのIsCheckedプロパティはNullableブール値です。

public bool? IsChecked { get; set; }

Nullableブール値を作成し、それが機能することを確認します。

コード

bool? NullableBool = chkRevLoop.IsChecked;
if(NullableBool == true)
{
}
2
Abin Mathew

ラジオボタンがチェックされているかどうかを確認するには、1行で十分です。

string status = Convert.ToBoolean(RadioButton.IsChecked) ? "Checked" : "Not Checked";
2
H Aßdøµ

Nullableオブジェクトを使用する必要があります。 IsCheckedプロパティは、Null、true、falseの3つの異なる値に割り当てることができるため

Nullable<bool> isChecked  = new Nullable<bool>(); 
isChecked = chkRevLoop.IsChecked; 

if (isChecked.HasValue && isChecked.Value)
{


}
1
Ugur