如何在窗体的设计器上为自定义控件添加EventHandler?

时间:2019-05-10 21:58:28

标签: c#

目标:

FormA具有CustomButtonA。
当我单击CustomButtonA时,我希望FormA调用MethodA

尝试失败:

在FormA的设计器中,我添加了:

this.instanceOfButtonA.Click+= new System.EventHandler(this.buttonAPressed);

在FormA上,我还添加了:

private void buttonAPressed(object sender, EventArgs e)
{
   MethodA();
}

结果:从未调用过MethodA

“解决方案”

我在CustomButtonA上添加了

public delegate void EventHandler(object sender, System.EventArgs args);
public event EventHandler OnClickEvent = delegate { };

protected override void OnControlAdded(ControlEventArgs e)
{
     e.Control.Click += new System.EventHandler(Control_Click);
     base.OnControlAdded(e);
}

void Control_Click(object sender, System.EventArgs e)
{
       OnClickEvent(this, new System.EventArgs());
}

在FormA的构造函数中,我添加了:

this.instanceOfButtonA.OnClickEvent += (sender, args) => { MethodA(); };

作为一种选择,我想我可以使用一个委托,以便buttonA可以调用MethodA而不用抛出FormA处理的事件

问题:
我可以做些什么来使失败的尝试奏效吗?
我对我的解决方案的工作方式并不满意

0 个答案:

没有答案