libro
www.tuyano.com
C#ではじめるWindows 8アプリ開発入門

チェックボックスとラジオボタン (2/4)

作成:2014-02-08 09:52
更新:2014-02-08 10:00

■CheckedとUncheckedイベント

次にCheckBoxをプログラムで利用する場合について説明しましょう。まずイベントですが、クリックした時に発生するClickイベントの他に、チェック状態の変化に応じたイベントが用意されています。

Checked――選択された(ONになった)ときに発生するイベントです。
Unchecked――選択が外された(OFFになった)ときに発生するイベントです。

CheckBoxのチェック状態に関するイベントは、このように「ONになったとき」「OFFになったとき」とそれぞれ別に用意されています。ON/OFF状態に応じた処理を用意する場合は、この両方のイベントを利用する必要があるでしょう。

また、InThreeStateで未定状態を使えるようにした場合、このどちらのイベントも発生しないので注意が必要です。では、実際に利用してみましょう。

ここでは1つのTextBlocktextblock1)と、2つのCheckBox(それぞれcheck1check2としておきます)を配置し、check2IsThreeStateをONにしておきます。そして以下のようにイベントを設定します。

●check1
Checked――OnCheck1_Checked
Unchecked――OnCheck1_Unchecked

●check2
Clicked――OnCheck2_Clicked

下にそれぞれのメソッドのコードを掲載しておきます。アプリを実行し、2つのチェックボックスを操作してみましょう。チェックの状態がTextBlockに表示されます。

CheckBoxのチェック状態は「IsChecked」プロパティで取得できます。ここではイベント用メソッドの引数で渡されるobjectCheckBoxにキャストして、イベントが発生したCheckBoxIsCheckedを取得して表示するようにしてあります。

この値は、基本的にはtrueかfalseになりますが、IsThreeStateをONにして「未定」状態にした時には、IsCheckedはどうなるのでしょう? 真偽値はtrueかfalseしか値がないはずですね?

実際にやってみるとわかりますが、実は未定の時は、IsCheckの値は「null」になるのです。「それってアリかよ!」と思わず突っ込んだ人、います?

※プログラムリストが表示されない場合

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;
        }


※関連コンテンツ

「C#ではじめるWindows 8アプリ開発入門」に戻る