我有这个代码,我附加到我的应用的托盘图标上的DoubleClick
事件:
ni.DoubleClick +=
delegate(object sender, EventArgs args)
{
this.MainWindow.Show();
};
但是,是否可以将此代码用于两个事件(DoubleClick
和Click
),如下所示:
ni.DoubleClick, ni.Click +=
delegate(object sender, EventArgs args)
{
this.MainWindow.Show();
};
仅用于最小化代码大小和可读性。感谢
答案 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();