在最近的项目中遇到一个这种问题,如何在调用自定义控件的Form中调用点击事件,而不是在写在自定义控件中调用。
Form控件中的方法:
bugEditor.ButtonCaptureScreenClick+= new EventHandler(editor_ButtonCaptureScreenClick);
private void editor_ButtonCaptureScreenClick(object sender, EventArgs e) {
MessageBox.Show("test");
}
实现在自定义控件中定义响应事件的方法有二种 :
1:
#region ScreenCut
private static readonly object EventButtonCaptureScreenClick = new object();
public event EventHandler ButtonCaptureScreenClick
{
add {base.Events.AddHandler(EventButtonCaptureScreenClick,value);}
remove { base.Events.RemoveHandler(EventButtonCaptureScreenClick, value); }
}
protected virtual void OnButtonCaptureScreenClick(EventArgs e)
{
EventHandler handler =
base.Events[EventButtonCaptureScreenClick] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
private void btnScreenCut_Click(object sender, EventArgs e)
{
OnButtonCaptureScreenClick(e);
}//在designer页面中添加事件的委托
#endregion
2 :
public event EventHandler ButtonCaptureScreenClick
{
add { this.btnScreenCut.Click += value; }
remove { this.btnScreenCut.Click -= value; }
}