这是一个非常简单的问题。我问,因为我之前从未见过它,这让我想知道是否有什么问题。
comboBox1.MouseEnter += (a, b) => comboBox1.Focus();
campaignDataGridView.MouseEnter += (a, b) => campaignDataGridView.Focus();
答案 0 :(得分:9)
但是,这是完全可以接受的,因为这些是匿名委托,所以无法取消订阅事件处理程序。
那是:
// Subscribe lambda as event handler
comboBox1.MouseEnter += (a, b) => comboBox1.Focus();
// Try to unsubscribe a _different_ lambda with identical syntax.
// The first lambda is still subscribed
comboBox1.MouseEnter -= (a, b) => comboBox1.Focus();
这是否有问题取决于您的申请和使用。
答案 1 :(得分:5)
很好;唯一微妙的一点是,如果你需要取消订阅;那么你也需要在本地存储代理:
EventHandler handler = (s,a) => ...
obj.SomeEvent += handler;
...
obj.SomeEvent -= handler;
请注意,如果我没有使用任何参数(sender / args),我更喜欢anon方法语法:
obj.SomeEvent += delegate {...};
因为这不会在范围中引入任何额外的(不必要的)变量。