两个事件的一个功能

时间:2013-04-30 14:37:28

标签: c#

我有这个代码,我附加到我的应用的托盘图标上的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 个答案:

答案 0 :(得分:21)

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

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

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

ni.DoubleClick += ClickHandler;
ni.Click += ClickHandler;

答案 1 :(得分:5)

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

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

ni.DoubleClick += OnClick;
ni.Click += OnClick;

答案 2 :(得分:5)

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

EventHandler e = (sender, args) => this.MainWindow.Show();
ni.DoubleClick += e;
ni.Click += e;

答案 3 :(得分:4)

请事先将其分配给变量:

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

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

BTW,可以使用匿名方法语法简化事件处理程序定义:

EventHandler eventHandler = (s, e) => this.MainWindow.Show();