这是一个非常简单的问题.我问,因为我以前从未见过它,这让我想知道是不是有什么问题.
comboBox1.MouseEnter += (a, b) => comboBox1.Focus();
campaignDataGridView.MouseEnter += (a, b) => campaignDataGridView.Focus();
Run Code Online (Sandbox Code Playgroud)
但是,这是完全可以接受的,因为这些是匿名委托,所以无法取消订阅事件处理程序.
那是:
// 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();
Run Code Online (Sandbox Code Playgroud)
这是否有问题取决于您的应用和使用.
没事; 唯一微妙的一点是,如果你需要取消订阅; 那么你还需要在本地存储代理:
EventHandler handler = (s,a) => ...
obj.SomeEvent += handler;
...
obj.SomeEvent -= handler;
Run Code Online (Sandbox Code Playgroud)
请注意,如果我没有使用任何参数(sender/args),我更喜欢anon方法语法:
obj.SomeEvent += delegate {...};
Run Code Online (Sandbox Code Playgroud)
因为这不会将任何额外的(不必要的)变量引入范围.