继承Label自定义控件怎样才能激发窗口的自定义事件DoubleClickMyLabel

Leo Tin 2009-11-23 07:52:29
我想做一个继承于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);
}
}

现在急需这个的东西,请各位搭救一下,谢谢!
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2009-11-26
  • 打赏
  • 举报
回复
楼主还不太熟悉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);
}
}
hiddkiller 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 leotian 的回复:]
我想做一个继承于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);
        }
    }

现在急需这个的东西,请各位搭救一下,谢谢!
[/Quote]


还以为是通用Label.... 原来是写死的...
Leo Tin 2009-11-26
  • 打赏
  • 举报
回复
楼上厉害,把分全部给你。
ireenter 2009-11-25
  • 打赏
  • 举报
回复
在lable的click事件内调用控件的click事件,参数为this。调用方法为 OnClick(this);
Leo Tin 2009-11-25
  • 打赏
  • 举报
回复
楼上废话


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);
}
}
liherun 2009-11-25
  • 打赏
  • 举报
回复
mark~
hiddkiller 2009-11-24
  • 打赏
  • 举报
回复
mark

Sugar_Tiger 2009-11-24
  • 打赏
  • 举报
回复

public partial class MyLabel : Label

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧