这里:http://msdn.microsoft.com/en-us/library/hkkb40tf(v=VS.90).aspx,它说,要从另一个按钮调用按钮的点击事件,你可以/应该这样做:
button1.PerformClick();
然而,在我的情况下(VS 2003. NET 1.1),这不编译(诚然,上面的链接指定VS 2008,但它没有指向先前版本的相关信息的链接,因为msdn经常这样做)。
编译:
private void btnPrint_Click(object sender, System.EventArgs args)
{
if (this.recordChanged)
{
//btnSave.Click();
btnSave_Click(sender, args);
}
. . .
......但我不知道这是不是这样做的。
答案 0 :(得分:6)
将您想要执行的业务逻辑放在一个单独的方法中(例如DoSave()),然后您的事件处理程序可以只调用该内部方法而不是直接相互调用。
通过直接调用事件处理程序方法“伪造”事件是丑陋的并且可能导致错误(将来修改事件处理程序的任何程序员都可能不知道它可以在不同于预期/记录的条件下调用,这可能导致打印选项在尝试执行保存操作时表现异常甚至崩溃)
此外,您很可能希望将来从其他地方进行保存操作 - 因此将业务逻辑与激活它的使用界面分开始终是一个非常好的主意。
答案 1 :(得分:0)
我会做btnSave.Click(sender, args);
。这是MSDN上的页面:http://msdn.microsoft.com/en-us/library/aa645739(v=VS.71).aspx