簡體   English   中英

WPF 復選框檢查 IsChecked

[英]WPF Checkbox check IsChecked

我不是在談論一個事件處理程序,而是一個簡單的If Statement檢查CheckBox是否已被選中。 到目前為止,我有:

if (chkRevLoop.IsChecked == true){}

但這會引發錯誤:

不能隱式轉換類型“bool?” '布爾'。 存在顯式轉換(您是否缺少演員表?)

有沒有辦法做到這一點,我失蹤了?

您可以使用空合並運算符 如果左側操作數為空,則此運算符返回右側操作數。 因此,當CheckBox處於不確定狀態時(當IsChecked屬性的值設置為 null)時,您可以返回false

if (chkRevLoop.IsChecked ?? false)
{

}

您必須從bool?進行此轉換bool? bool ,使其工作:

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

由於它已經是一個bool條件,因此您無需將 true 設為 false,因為如果它為真,則只有它才會進入此 if 條件,否則不會。 所以,甚至不需要在這里放chkRevLoop.IsChecked == true ,默認情況下,你會通過 puttin 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 會在演員表中發生什么

考慮檢查該屬性是否具有值:

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

if (isChecked == true){}

CheckBox 的IsChecked屬性是 Nullable 布爾值。

public bool? IsChecked { get; set; }

創建一個 Nullable 布爾值並將其等同於您。

代碼

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

一行足以檢查單選按鈕是否被選中:

string status = Convert.ToBoolean(RadioButton.IsChecked) ? "Checked" : "Not Checked";

您應該使用 Nullable 對象。 因為 IsChecked 屬性可以分配給三個不同的值:Null、true 和 false

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

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


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM