libro
www.tuyano.com
初心者のためのC#プログラミング入門

さまざまなコントロールの利用 (1/4)

作成:2013-08-31 09:22
更新:2013-08-31 09:22

■CheckBoxについて

前回、LabelTextBoxButtonといったコントロールを使いましたが、この他にもコントロールはいろいろと用意されています。

まずは「チェックボックス」から使ってみましょう。これは「CheckBox」というクラスとして用意されています。チェックボックスは、クリックしてチェックをON/OFFするGUIですね。従って、これを利用するには、「チェックの状態を知る方法」、更には「チェックをON/OFFしたときに何かを処理する方法(チェック時のイベント処理)」といったことについて知る必要があるでしょう。

チェックの状態もチェック時のイベント処理も、CheckBoxに用意されているプロパティを使って設定することができます。ただし、ちょっとややこしいのは、「チェックに関するプロパティが2種類ある」という点でしょう。以下に整理してみます。

●チェックの状態に関するプロパティ
Checked――チェックのON/OFF状態を真偽値で示すものです。trueならばON、falseならばOFFであることを示します。
CheckState――チェックの状態をCheckStateという値(列挙体という値です)で示すものです。これは以下の3つの値のいずれかになります。
    Checked――チェックがONになっている
    Unchecked――チェックがOFFになっている
    Indeterminate――チェックは不確定状態になっている

●チェック状態の変更時に発生するイベント用プロパティ
CheckedChanged――Checkedプロパティが変更された際のイベント
CheckStateChanged――ChechStateプロパティが変更された際のイベント

Checked系(?)とCheckState系の2種類のプロパティとイベントがあることがわかるでしょう。通常、この2つはどちらも同じものとして機能します。つまり、どっちを使っても同じです。違いは、「不確定状態」を必要とするか?です。

不確定状態というのは、「ONでもOFFでもない」状態です。これは、階層化されたチェックボックスなどで用いられます。例えば、あるチェックボックスの更に内部に複数のチェックボックスがある、というような場合ですね。こうしたとき、内部のチェックがONだったりOFFだったりする状態を表現するのに、それらが含まれている親チェックボックスを不確定状態として表したりします。

とりあえず、単純にON/OFFするだけできれば使えますので、まずはCheckedだけ覚えておけばよいでしょう。下に簡単な利用例を挙げておきました。チェックボックスを操作すると、現在の状態が表示されます。

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

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

using System;
using System.Drawing;
using System.Windows.Forms;

namespace MyFrmApp
{
    public class MyForm : Form
    {
        private Label label;
        CheckBox check;
        
        public MyForm()
        {
            this.Width = 300;
            this.Height = 200;
            setupControls();
        }
        
        public void setupControls()
        {
            label = new Label();
            label.Text = "type text:";
            label.Font = new Font("Geneva",12,FontStyle.Regular);
            label.Height = 30;
            label.Width = 300;
            this.Controls.Add(label);
            check = new CheckBox();
            check.Text = "check box";
            check.Top = 50;
            check.Left = 50;
            check.CheckedChanged += check_changed;
            this.Controls.Add(check);
        }
        
        private void check_changed(object sender, System.EventArgs e)
        {
             label.Text = "checked: " + check.CheckState + "(" + check.Checked + ")";
        }
    }
}

※関連コンテンツ

「初心者のためのC#プログラミング入門」に戻る