第13章 ボタンを継承してみる


独自のボタンクラスをButtonクラスから継承してみます。



独自のボタンクラスがあると、On何タラ系メソッドが使えます。

ButtonクラスにはOnClickメソッドがあるので、これを使えばイベントにデリゲートを関連づける作業がいらなくなります。

では、早速プログラムを見てみましょう。

// button03.cs

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

class button03
{
    public static void Main()
    {
        MyForm mf = new MyForm();

        MyButton mb1 = new MyButton("ボタン1", mf, new Point(10, 10));

        MyButton mb2 = new MyButton("ボタン2", mf, new Point(20 + mb1.Width, 10));

        Application.Run(mf);
    }
}

class MyForm : Form
{
    public MyForm()
    {
        Text = "猫でもわかるプログラミング";
        BackColor = SystemColors.Window;
    }
}

class MyButton : Button
{
    string btnstr;

    public MyButton(string str, Form form, Point pt)
    {
        Text = str;
        Parent = form;
        Location = pt;
        BackColor = SystemColors.Control;
        btnstr = str;
    }
    protected override void OnClick(EventArgs e)
    {
        base.OnClick(e);
        MessageBox.Show(btnstr + "を押したね", "猫でもわかるプログラミング",
            MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    }
}
最期の方のMyButtonクラスを見てみましょう。これは、Buttonクラスを継承しています。

コンストラクタMyButtonは、引数を利用してMyButtonクラスのText, Parent, Locationプロパティを設定しています。また、Textは、btnstrフィールドにも保存しています。これを利用して、ボタンの区別をしようというものです。

OnClickメソッドをオーバーライドしています。OnClickメソッドは、Controlクラスから継承されてきています。これで、Clickイベントに対応できます。

ここでは、「btnstr + "を押したね"」というメッセージボックスを出していますが、btnstrは、コンストラクタでもらってきたstringですね。

Mainメソッドでは、MyButton(表示する文字列, 親, 位置)でボタンを作ることができるので、すっきりした形になります。

実行結果は、次のようになります。




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

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