0

Label下面是WinForms中标准控件的一部分:

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 回答