调用按钮的单击事件的正确方法是什么?

这里: 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); } . . . 

……但我不知道这是不是这样做的。

将您想要执行的业务逻辑放在一个单独的方法(例如DoSave())中,然后您的事件处理程序可以只调用该内部方法而不是直接相互调用。

通过直接调用事件处理程序方法来“伪造”事件是丑陋的并且可能导致错误(任何程序员将来修改事件处理程序可能不知道它可以在不同于预期/记录的条件下调用,这可能导致打印选项在尝试执行保存操作时表现奇怪甚至崩溃)

此外,您很可能希望将来从其他地方进行保存操作 – 因此,将业务逻辑与激活它的使用界面分开始终是一个非常好的主意。

我会做btnSave.Click(sender, args); 。 这是MSDN上的页面: http : //msdn.microsoft.com/en-us/library/aa645739( v = VS.71).aspx