自定义控件,公开Button Control的OnClick事件

时间:2011-09-27 22:16:52

标签: c# winforms event-handling

我需要设计一个基本上是一个花哨的按钮的自定义控件,我们称之为CtrlButton

我想将这些内容放在我的空白表单上,然后转到我控制的事件,并指定如何处理点击事件。

如果我的自定义控件CtrlButton包含1个名为button1的Windows窗体按钮,我是否可以简单地公开button1的基础Click事件处理程序?

public EventHandler Click {
  get { return button1.Click; }
  set { button1.Click = value; }
}

此代码无效!但是,这基本上就是我想要做的事情。

编辑:我看到这篇文章获得了热门提问,但它仍然保持在-1。如果这个问题可以帮助您找到答案,请将其投票。

2 个答案:

答案 0 :(得分:3)

Button.Click是一个事件,而不是一个属性。你不能得到并设定它的价值,因为它不是一个财产;你只能添加和删除处理程序,因为它是一个事件,事件就是这样的。

但是您可以使用自定义addremove处理程序包裹Button来编写自己的事件:

public event EventHandler Click {
    add { button1.Click += value; }
    remove { button1.Click -= value; }
}

答案 1 :(得分:3)

如果这是从标准Button控件派生的,则为:

using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsControlLibrary1
{
   public class RedButton : Button
   {
       public RedButton()
       {
           base.BackColor = Color.Red;
       }
   }
}

事件可用。如果您已完全自定义制作自己的按钮,则必须连接所有事件,ala this post