チェックボックスとラジオボタン (2/4)
作成:2014-02-08 09:52
更新:2014-02-08 10:00
更新:2014-02-08 10:00
■CheckedとUncheckedイベント
次にCheckBoxをプログラムで利用する場合について説明しましょう。まずイベントですが、クリックした時に発生するClickイベントの他に、チェック状態の変化に応じたイベントが用意されています。
Checked――選択された(ONになった)ときに発生するイベントです。
Unchecked――選択が外された(OFFになった)ときに発生するイベントです。
CheckBoxのチェック状態に関するイベントは、このように「ONになったとき」「OFFになったとき」とそれぞれ別に用意されています。ON/OFF状態に応じた処理を用意する場合は、この両方のイベントを利用する必要があるでしょう。
また、InThreeStateで未定状態を使えるようにした場合、このどちらのイベントも発生しないので注意が必要です。では、実際に利用してみましょう。
ここでは1つのTextBlock(textblock1)と、2つのCheckBox(それぞれcheck1、check2としておきます)を配置し、check2はIsThreeStateをONにしておきます。そして以下のようにイベントを設定します。
●check1
Checked――OnCheck1_Checked
Unchecked――OnCheck1_Unchecked
●check2
Clicked――OnCheck2_Clicked
下にそれぞれのメソッドのコードを掲載しておきます。アプリを実行し、2つのチェックボックスを操作してみましょう。チェックの状態がTextBlockに表示されます。
CheckBoxのチェック状態は「IsChecked」プロパティで取得できます。ここではイベント用メソッドの引数で渡されるobjectをCheckBoxにキャストして、イベントが発生したCheckBoxのIsCheckedを取得して表示するようにしてあります。
この値は、基本的にはtrueかfalseになりますが、IsThreeStateをONにして「未定」状態にした時には、IsCheckedはどうなるのでしょう? 真偽値はtrueかfalseしか値がないはずですね?
実際にやってみるとわかりますが、実は未定の時は、IsCheckの値は「null」になるのです。「それってアリかよ!」と思わず突っ込んだ人、います?
Checked――選択された(ONになった)ときに発生するイベントです。
Unchecked――選択が外された(OFFになった)ときに発生するイベントです。
CheckBoxのチェック状態に関するイベントは、このように「ONになったとき」「OFFになったとき」とそれぞれ別に用意されています。ON/OFF状態に応じた処理を用意する場合は、この両方のイベントを利用する必要があるでしょう。
また、InThreeStateで未定状態を使えるようにした場合、このどちらのイベントも発生しないので注意が必要です。では、実際に利用してみましょう。
ここでは1つのTextBlock(textblock1)と、2つのCheckBox(それぞれcheck1、check2としておきます)を配置し、check2はIsThreeStateをONにしておきます。そして以下のようにイベントを設定します。
●check1
Checked――OnCheck1_Checked
Unchecked――OnCheck1_Unchecked
●check2
Clicked――OnCheck2_Clicked
下にそれぞれのメソッドのコードを掲載しておきます。アプリを実行し、2つのチェックボックスを操作してみましょう。チェックの状態がTextBlockに表示されます。
CheckBoxのチェック状態は「IsChecked」プロパティで取得できます。ここではイベント用メソッドの引数で渡されるobjectをCheckBoxにキャストして、イベントが発生したCheckBoxのIsCheckedを取得して表示するようにしてあります。
この値は、基本的にはtrueかfalseになりますが、IsThreeStateをONにして「未定」状態にした時には、IsCheckedはどうなるのでしょう? 真偽値はtrueかfalseしか値がないはずですね?
実際にやってみるとわかりますが、実は未定の時は、IsCheckの値は「null」になるのです。「それってアリかよ!」と思わず突っ込んだ人、います?
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
private void OnCheck1_Checked(object sender, RoutedEventArgs e) { CheckBox check1 = (CheckBox)sender; string msg = "you checked check1 to " + check1.IsChecked; textblock1.Text = msg; } private void OnCheck1_Unchecked(object sender, RoutedEventArgs e) { CheckBox check1 = (CheckBox)sender; string msg = "you checked check1 to " + check1.IsChecked; textblock1.Text = msg; } private void OnCheck2_Clicked(object sender, RoutedEventArgs e) { CheckBox check2 = (CheckBox)sender; string msg = "you checked check1 to " + check2.IsChecked; textblock1.Text = msg; }
※関連コンテンツ