4

我将这段代码附加到DoubleClick我的应用程序托盘图标上的事件中:

ni.DoubleClick +=
  delegate(object sender, EventArgs args)
        {
            this.MainWindow.Show();
        };

但是,是否可以将此代码用于两个事件(DoubleClickClick),如下所示:

ni.DoubleClick, ni.Click +=
  delegate(object sender, EventArgs args)
        {
            this.MainWindow.Show();
        };

只是为了最小化代码大小和可读性。谢谢

4

4 回答 4

21

将处理程序放在自己的函数中:

private void ClickHandler(object sender, EventArgs args)
{
    this.MainWindow.Show();
}

然后将其连接到两个事件:

ni.DoubleClick += ClickHandler;
ni.Click += ClickHandler;
于 2013-04-30T14:39:03.687 回答
5

只需EventHandler使用 lambda 表达式创建并将其添加到两个事件中。

EventHandler e = (sender, args) => this.MainWindow.Show();
ni.DoubleClick += e;
ni.Click += e;
于 2013-04-30T14:45:35.383 回答
5

不,但您可以将其设为标准的非匿名函数并将其用于这两个事件。

private void OnClick(object sender, EventArgs e) { ... }

ni.DoubleClick += OnClick;
ni.Click += OnClick;
于 2013-04-30T14:38:21.050 回答
4

只需事先将其分配给一个变量:

EventHandler eventHandler = delegate(object sender, EventArgs args)
    {
        this.MainWindow.Show();
    };

ni.DoubleClick += eventHandler;
ni.Click += eventHandler;

顺便说一句,可以使用匿名方法语法简化事件处理程序定义:

EventHandler eventHandler = (s, e) => this.MainWindow.Show();
于 2013-04-30T14:39:21.003 回答