我需要设计一个基本上是一个花哨的按钮的自定义控件,我们称之为CtrlButton
。
我想将这些内容放在我的空白表单上,然后转到我控制的事件,并指定如何处理点击事件。
如果我的自定义控件CtrlButton
包含1个名为button1
的Windows窗体按钮,我是否可以简单地公开button1
的基础Click事件处理程序?
public EventHandler Click {
get { return button1.Click; }
set { button1.Click = value; }
}
此代码无效!但是,这基本上就是我想要做的事情。
编辑:我看到这篇文章获得了热门提问,但它仍然保持在-1。如果这个问题可以帮助您找到答案,请将其投票。
答案 0 :(得分:3)
Button.Click是一个事件,而不是一个属性。你不能得到并设定它的价值,因为它不是一个财产;你只能添加和删除处理程序,因为它是一个事件,事件就是这样的。
但是您可以使用自定义add
和remove
处理程序包裹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。