2012-04-06 69 views
1

(使用WPF應用程序) 我得到一個錯誤,當我想以一個布爾保存到這樣一個全局變量:保存複選框/單選框BOOL到全局變量

Window msgOne = new Window(); 
if (Properties.Settings.Default.sound01 == true) 
    { 
    msgOne.radioboxSound.IsChecked = true; 
    } 
else 
    { 
    msgOne.radioboxSound.IsChecked = false; 
    } 
msgOne.ShowDialog(); 
//waiting for close 
Properties.Settings.Default.sound01 = msgOne.radioboxSound.IsChecked; 

其中radioboxSound是複選框,該Properties.Settings.Default.sound01是全局參數你可以在設置選項卡中的VB C#

是我得到了上述snipit的最後一個環節)的錯誤:「布爾」 無法隱式轉換類型到「布爾」。一個顯式轉換存在(是否缺少強制轉換?)

但是我沒有使用已設置的任何布爾?只有棉桃。

任何人都知道如何處理這一個?

感謝名單

+0

你使用可空(又名bool的?),因爲是器isChecked一個。 – scottheckel 2012-04-06 14:35:32

回答

4

單選按鈕的財產器isChecked是 '布爾?'。將您的代碼更改爲

Properties.Settings.Default.sound01 = msgOne.radioboxSound.IsChecked??false; 

更多解釋。

由於RadioButton.IsChecked是一個Nullable,因此無論IsThreeState屬性設置爲true還是false,都需要處理IsChecked爲空的事實。

你可以使用

Properties.Settings.Default.sound01 = msgOne.radioboxSound.IsChecked == true; 

或使用空合併運算符如上。

+0

這的確修復它,但你能解釋一下我的理解?錯誤 - >含義,如果它無法得到它,它會設置錯誤?或者它有什麼作用? – Dante1986 2012-04-06 14:41:59

+0

Tha的權利。這是空合併運算符和有效的簡寫:msgOne.radioboxSound.IsChecked.HasValue? msgOne.radioboxSound.IsChecked.Value:假的;這是它的簡寫if(..)... else ... – Phil 2012-04-06 14:44:07