2012-04-06 14 views
1

(WPFアプリケーションを使用して)私は、このようなグローバル変数にブール値を保存したいとき が、私はエラーを取得する:保存する]チェックボックス/ラジオボタンブール値

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の設定タブで作成できるグローバルパラメータです。 暗黙的に "bool?"型に変換できません。 "ブール"に。明示的な変換があります(キャストがありませんか?)

しかし、私はboolを使用していません。

誰もがこの問題に対処する方法を知っていますか?

ありがとう

+0

IsCheckedが1であるため、Nullable (別名bool?)を使用します。 – scottheckel

答えて

4

ラジオボタンのにisCheckedプロパティは、 'ブール?' です。コードを

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

もう少し説明に変更してください。

RadioButton.IsCheckedはNullableなので、IsThreeStateプロパティがtrueまたはfalseに設定されているかどうかにかかわらず、IsCheckedがnullableであるという事実を処理する必要があります。

あなたは

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

を使用するか、上記のようにnull合体演算子を使用することができます。

+0

これは確かにそれを修正しますが、あなたは私の理解のために少し説明することができますか? ?false - >意味、何とかそれを得ることに失敗した場合、それはfalseに設定されますか?またはそれは何ですか? – Dante1986

+0

その通りです。それはヌル合体演算子であり、以下を効率的に短縮します:msgOne.radioboxSound.IsChecked.HasValue? msgOne.radioboxSound.IsChecked.Value:false;それはそれ自体が(..)... elseのために簡略化されています... – Phil

関連する問題