我(不可否认)的理解是,您应该能够向 C# 事件添加任意数量的委托(delegate),并且它们都会被调用(以某种未定义的顺序)。但在我的项目中似乎并非如此。我把它归结为两个委托(delegate)添加到 NSButton 的 Activated 事件(这是在 MonoMac 中),如下所示:
nsButton = new NSButton(new System.Drawing.RectangleF(0, 0, 100, 100));
nsButton.StringValue = "Click me!";
nsButton.Activated += delegate(object sender, EventArgs e) {
Console.WriteLine("Handler 1!");
};
nsButton.Activated += delegate(object sender, EventArgs e) {
Console.WriteLine("Handler 2?");
};
(然后这个按钮当然被添加到窗口中)。单击它时,我看到“处理程序 1!”但我没有看到“Handler 2?”出现在控制台中。如果我注释掉添加处理程序 1 的行,则处理程序 2 会触发。
它的行为就好像只有第一个添加的委托(delegate)起作用,任何后续的都被忽略。但这违背了我能找到的关于 C# 中的事件应该如何工作的所有信息。我做错了什么?
最佳答案
这实际上是一个错误。我在这里提交:
关于c# - 只有一个 C# 事件处理程序被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432550/