也许解决方案更加简单: 也许你并不是真的想要你的代码“点击按钮”。 你只是想从表单的其他地方运行按钮后面的代码吗? 如果是的话,将代码放入一个单独的方法中(比如“DoActionXXX”),并从按钮和任何需要的地方调用该方法。
你还可以看一下Windows辅助功能或一些UI自动化框架,这些框架允许你通过编程方式使UI控件响应用户手势。如果一个控件没有提供像PerformClick这样的程序触发事件的方法,你可以从该控件派生并公开一个名为PerformnXXX的公共方法,当调用该方法时,它会在内部调用订阅特定事件的事件处理程序。
我认为从设计角度来看,发送点击事件并不是最好的方式,你可以让事件处理程序调用另一个函数。这样,你总是可以访问该函数。所以...void myEventHandler(ObjectwhoSentTheMessage O, Event e) { MyOtherFunction(); //如果需要,之后可以消耗事件 } }