第33章 ラベルコントロールを使ってみる


この章では、ラベルコントロールを使ってみます。使い方はボタンやテキストボックスと似ています。



Labelクラスの継承関係は次のようになっています。

System.Object 
   System.MarshalByRefObject 
     System.ComponentModel.Component 
       System.Windows.Forms.Control 
        System.Windows.Forms.Label
必須のプロパティには、次のような物があります。
public override string Text { get; set; }
これは、Control.Textをオーバーライドしています。

Textプロパティを設定すれば、わざわざPaintイベントを処理しなくてもラベル上にテキストを表示できます。Win32APIのスタティックコントロールに似ています。

この章のサンプルでは、テキストボックスのTextプロパティの値が変更されたときに発生するControl.TextChangedイベントを処理しています。

では、サンプルのプログラムを見てみましょう。

// label01.cs

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

class label01 : Form
{
    public static void Main()
    {
        label01 form = new label01();

        MyLabel ml = new MyLabel();
        ml.Parent = form;

        MyTextBox mt = new MyTextBox();
        mt.Parent = form;
        mt.Location = new Point(10, ml.Height + 20);

        Application.Run(form);
    }

    public label01()
    {
        Text = "猫でもわかるC#プログラミング";
        BackColor = SystemColors.Window;
    }
}

class MyLabel : Label
{
    public MyLabel()
    {
        Location = new Point(10, 10);
        Size = new Size(200, 100);
        BorderStyle = BorderStyle.Fixed3D;
    }
}

class MyTextBox : TextBox
{
    public MyTextBox()
    {
        BackColor = SystemColors.Control;
        Multiline = true;
        Size = new Size(200, 100);
    }

    protected override void OnTextChanged(EventArgs e)
    {
        base.OnTextChanged(e);
        Parent.Controls[0].Text = Text;
    }
}
実行結果は次のような感じになります。

下のテキストボックスに書き込むと、上段のラベルに同じ文章が表示されます。

テキストボックスを複数行対応にするには、

Multiline = true;
とします。

また、ラベルはそのままでは、どこにあるのかわからないので、

BorderStyle = BorderStyle.Fixed3D;
として、境界をFixed3Dスタイルにしています。




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

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