c# - 如何为表单设计器上的自定义控件添加 EventHandler?
问题描述
目标:
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 处理的事件
问题:
我可以做些什么来使我失败的尝试成功吗?
我对我的解决方案的工作方式并不满意
解决方案
推荐阅读
- javascript - 使用切换开关控制表单的输入字段活动状态
- java - Java 执行器服务
- haskell - 堆栈找不到 -lncursesw
- css - 为什么 flexbox 不能使用 flex-direction 进行响应式设计?
- python - 如何在python中获取多行、多变量输入
- c++ - 使用线程本地的工厂
- linux - 加载共享库时出错:libreadline.so.7:无法打开共享对象文件:没有这样的文件或目录
- c# - 第一种形式没有消失?
- java - Spring in action 第 5 版 - 第 1 章,STS 设置问题
- go - Goroutine 运行的顺序