0

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

...但我不知道这是否是这样做的方法。

4

2 回答 2

6

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

通过直接调用事件处理程序方法来“伪造”事件是丑陋的并且可能导致错误(将来修改事件处理程序的任何程序员可能都没有意识到它可以在与预期/记录不同的条件下被调用,这可能导致打印选项尝试执行保存操作时行为异常甚至崩溃)

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

于 2013-02-20T18:58:13.283 回答
0

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

于 2013-02-20T18:55:37.520 回答