是否有可能在任何情况下都能够做到这一点?
我现在的情况是这样的:
public class CustomForm : Form
{
public class CustomGUIElement
{
...
public event MouseEventHandler Click;
// etc, and so forth.
...
}
private List<CustomGUIElement> _elements;
...
public void CustomForm_Click(object sender, MouseEventArgs e)
{
// we might want to call one of the _elements[n].Click in here
// but we can't because we aren't in the same class.
}
}
我的第一个想法是有一个类似的功能:
internal enum GUIElementHandlers { Click, ... }
internal void CustomGUIElement::CallHandler(GUIElementHandler h, object[] args) {
switch (h) {
case Click:
this.Click(this, (EventArgs)args[0]);
break;
... // etc and so forth
}
}
这是一个非常丑陋的组合,但它应该可以工作......但必须有一个更优雅的解决方案?.NET 库一直使用消息处理程序和控件中的调用事件来执行此操作。还有其他人有任何其他/更好的想法吗?