我想做一个继承于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);
}
}现在急需这个的东西,请各位搭救一下,谢谢!
public void DoubleClickMyLabel(MyLabel _lb)
传递参数为控件本身.这个类该怎么写
public partial class MyLabel : Control
{
public MyLabel()
{
InitializeComponent();
} protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
}现在急需这个的东西,请各位搭救一下,谢谢!
public partial class MyLabel : Label
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);
}
}
事件是委托,按你的说法,你希望的是在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);
}
}