我想做一个继承于Label的自定义控件MyLabel,双击MyLabel,运行窗口的同一个事件
public void DoubleClickMyLabel(MyLabel _lb)
传递参数为控件本身.这个类该怎么写
    public partial class MyLabel : Control
    {
        public MyLabel()
        {
            InitializeComponent();
        }        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
        }
    }现在急需这个的东西,请各位搭救一下,谢谢!

解决方案 »

  1.   


    public partial class MyLabel : Label
      

  2.   

    楼上废话
        public partial class MyLabel : System.Windows.Forms.Label
        {
            protected override void OnDoubleClick(EventArgs e)
            {
                base.OnDoubleClick(e);
                ((MainForm)this.Parent.Parent.Parent.Parent).DoubleClickMyLabel((MyLabel)this,(TabPage)this.Parent.Parent);
            }
        }
      

  3.   

    在lable的click事件内调用控件的click事件,参数为this。调用方法为 OnClick(this);
      

  4.   

    还以为是通用Label.... 原来是写死的...
      

  5.   

    楼主还不太熟悉c#。
    事件是委托,按你的说法,你希望的是在MyLabel中触发双击,这个你可以按你这样自己写的MyLabel,添加到窗体上后,选中这个控件,在事件列表中找到DoubleClick,添加这个事件就可以了。没必要写到窗体中。如果想做一个相关一类的MyLabel的所有对象都执行的操作,可以写成静态事件。
    public partial class MyLabel : Control
    {
        public MyLabel()
        {
            InitializeComponent();
        }    protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
        }    protected override void OnDoubleClick(EventArgs e)
        {
            base.OnDoubleClick(e);
            if (GlobalDoubleClickedMyLabel != null)
            {
                GlobalDoubleClickedMyLabel(this);
            }
        }    public delegate void GlobalDoubleClickedMyLabelHandler(MyLabel m);
        public static event GlobalDoubleClickedMyLabelHandler GlobalDoubleClickedMyLabel;
    }
    然后在你的窗体里,进行注册就可以了
    public class Form1:Form
    {
        MyLabel my_label1 = new MyLabel();
        public Form1()
        {
            InitializeComponent();
            this.Controls.Add(my_label1);
            MyLabel.GlobalDoubleClickedMyLabel += DoubleClickedMyLabel;
        }
        public void DoubleClickedMyLabel(MyLabel m)
        {
            MessageBox.Show(m.Text);
        }
    }