第34章 チェックボックスを使ってみる


この章では、チェックボックスを取り扱ってみます。



CheckBoxクラスの継承関係は、Buttonクラスと同じです。CheckBoxとButtonは兄弟の関係にあります。

System.Object 
   System.MarshalByRefObject 
     System.ComponentModel.Component 
       System.Windows.Forms.Control 
         System.Windows.Forms.ButtonBase 
          System.Windows.Forms.CheckBox
必須のプロパティはCheckedでしょう。
public bool Checked { get; set; }
デフォルトではfalseです。チェックボックスがチェックされているかどうかを示す値を取得または、設定します。

AutoCheckプロパティは、デフォルトでtrueです。意図的にfalseにしない限り実際はあまり登場してこないかも知れません。trueの場合は、チェックボックスがクリックされたときにChecked値を自動的に変更し、チェックボックスの外観も変更します。また、CheckedChangedイベントを発生します。(AutoCheckがfalseの場合は自分でClickイベントを処理する必要がある)

では、実際のプログラムを見てみましょう。

// checkbox01.cs

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

class checkbox01
{
    static CheckBox cb0, cb1;
    static Label label;

    public static void Main()
    {
        Form form = new Form();
        form.Text = "猫でもわかるC#プログラミング";
        form.BackColor = SystemColors.Window;

        cb0 = new CheckBox();
        cb0.Parent = form;
        cb0.Text = "国語";
        cb0.Location = new Point(10, 10);
        cb0.CheckedChanged += new EventHandler(cb_CheckedChanged);

        cb1 = new CheckBox();
        cb1.Parent = form;
        cb1.Text = "算数";
        cb1.Location = new Point(10, 10 + cb0.Height);
        cb1.CheckedChanged += new EventHandler(cb_CheckedChanged);

        label = new Label();
        label.Parent = form;
        label.Location = new Point(10, 20 + cb0.Height * 2);
        label.Width = 150;

        Application.Run(form);
    }

    static void cb_CheckedChanged(Object sender, EventArgs e)
    {
        CheckBox cb = (CheckBox)sender;

        if (cb == cb0)
        {
            if (cb.Checked)
                label.Text = "国語がチェックされました";
            else
                label.Text = "国語のチェックが外されました";
        }

        if (cb == cb1)
        {
            if (cb.Checked)
            {
                label.Text = "算数がチェックされました";
            }
            else
            {
                label.Text = "算数のチェックが外されました";
            }
        }
    }
}
フォームは、Mainメソッドの中で直接Formクラスから作っています。

cb0, cb1は、他のメソッドからも見えるようフィールドにしていますが、Mainメソッドがstaticなのでcb0, cb1もstaticにしています。

チェックの状態が変わったら、ラベルにその旨を書き出しています。

チェックボックスの状態が変わるごとに、ラベルに表示されます。




[C# フォーム Index] [C# コンソール Index] [総合Index] [Previous Chapter] [Next Chapter]

Update 18/Nov/2006 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。