0

LabelWinFormsの標準コントロールの一部を次に示します。

public class Label : Control
{
       protected override void OnTextChanged(EventArgs e)
       {
           ...
       }
}

OnTextChanged イベントをオーバーライドしたいのですが、最善の方法がわかりません。

Label クラスからサブクラスを派生させてから、このように関数をオーバーライドする必要がありますか?

public class Class1 : Label
{
    protected override void OnTextChanged(EventArgs e)
    {
        MessageBox.Show("S");
    }
}

その場合、このクラスをどこにどのように追加すればよいですか?

そうでない場合、コントロール内で定義されている関数をオーバーライドするにはどうすればよいですか?

4

1 に答える 1

4

これは、制御のメソッドをオーバーライドできる方法です。あなたがしたように、絶対に正しいですが、詳細な実装はここにあります。

これはフォーム部分です

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class TestForm : Form
    {
        MyLabel newLable;
        public TestForm()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            newLable = new MyLabel();
            newLable.Height = 30;
            newLable.Width = 40;
            newLable.Text = "hello";
            this.Controls.Add(newLable);

        }       
    }
}

ツールボックスからMyLabelを使用することもできます。

そしてMyLabelクラスは

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{

   public class MyLabel:Label
    {

       public MyLabel()
       {

       }
       protected override void OnClick(EventArgs e)
       {
           base.OnClick(e);
           MessageBox.Show("Label Clicked");
       }

    }
}
于 2013-02-26T07:02:45.847 に答える