第29章 テキストボックスを継承してみる


この章では、テキストボックスと2つのボタンを持つフォームを作ってみます。



テキストボックスや、ボタンは機能ごとに独自のクラスを作るようにしてみます。

一つのボタンは、テキストボックスに表示されている文字列をメッセージボックスで表示します。もう一つのボタンは、テキストボックスをクリアします。

テキストボックスをクリアするには、Textプロパティを「""」に設定してもよいのですが、TextBoxBase.Clearメソッドを使っても同じ事ができます。

public void Clear ()
また、Control.Focusメソッドで、そのコントロールにフォーカスを設定することができます。

では、サンプルを見てみましょう。

// textbox02.cs

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

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

        Point pt1 = new Point(10, 10);
        MyTextBox mt = new MyTextBox(mf, pt1);

        Point pt2 = new Point(10, 20 + mt.Height);
        MyButton mb = new MyButton(mf, mt, pt2);

        Point pt3 = new Point(20 + mb.Width, 20 + mt.Height);
        MyClearButton mc = new MyClearButton(mf, mt, pt3);

        Size sz = new Size(30 + mb.Width + mc.Width, 30 + mt.Height + mb.Height);
        mf.ClientSize = sz;
        mf.FormBorderStyle = FormBorderStyle.FixedSingle;
        mf.MaximizeBox = false;
        mf.MinimizeBox = false;

        Application.Run(mf);
    }
}

class MyTextBox : TextBox
{
    public MyTextBox(Form parent, Point pt)
    {
        Parent = parent;
        Location = pt;
    }
}

class MyButton : Button
{
    TextBox txtbox;

    public MyButton(Form parent, TextBox tb, Point pt)
    {
        txtbox = tb;

        Parent = parent;
        Location = pt;
        Text = "押す";
        BackColor = SystemColors.Control;
    }

    protected override void OnClick(EventArgs e)
    {
        base.OnClick(e);
        MessageBox.Show(txtbox.Text, "猫C#",
            MessageBoxButtons.OK,
            MessageBoxIcon.Information);
        txtbox.Focus();
    }
}

class MyClearButton : Button
{
    TextBox txtbox;

    public MyClearButton(Form p, TextBox t, Point pt)
    {
        Parent = p;
        txtbox = t;
        Location = pt;
        BackColor = SystemColors.Control;
        Text = "消す";
    }

    protected override void OnClick(EventArgs e)
    {
        base.OnClick(e);
        txtbox.Clear();
        txtbox.Focus();
    }
}

class MyForm : Form
{
    public MyForm()
    {
        Text = "猫でもわかるC#プログラミング";
        BackColor = SystemColors.Window;
    }
}
では、実行結果を見てみましょう。

「押す」ボタンを押すと、テキストボックスの内容が、メッセージボックスで表示されます。

「消す」ボタンを押すとテキストボックスの内容がクリアされます。




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

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