我的计划是将GUI元素划分到一个类中,并有一个类,在这个类中,这些GUI元素将显示或放置在主窗体/用户控件上。那么,当我想在GUI元素中使用一个click处理程序,但它原来是放在mainform/usercontrol中时,我该怎么做呢?或者换句话说:如果可以通过paramter为GUI元素类构造函数提供click eventHandler,我如何在GUI元素中访问它,或者创建一个可以在GUI元素中使用的引用?
希望你明白我的原始目标是什么。
**补充:**因为我们在同一个命名空间,是否可能出现以下情况?我发现在历史和尝试,它的工作,但涉及的类是一个Usercontrol和它的主窗体(2窗体).
class GUI Elements {
public event Eventhandler ButtenClickedHandler;
private void ButtonClickHandler(object sender, EventArgs e) {
if ( this.ButtonClickedHandler != null ) this.ButtonClickedHandler( sender, e )
}
}
class Example : Usercontrol/Form {
...
GUI Elements gE = new GUI Elements()
gE.ButtonClickedHandler += new EventHandler( ClickEventhandler )
public void ClickEventHandler(object sender, EventArgs e) {}
...
}
只是一个很好的例子,有助于理解它必须如何做的原则。
1条答案
按热度按时间f87krz0w1#
当注册一个事件处理程序时,它不必在同一个类中,你可以在其他对象上使用一个方法。
还要注意编译器应该能够转换“方法组”,即一个方法的名称,传递给一个兼容的委托,而不需要显式地创建一个EventHandler:
或者您可以只在本地处理程序中转发事件