[英]C# Calling a method
我有一个包含多个用户控件实例的表单。
我已经分配了以下内容:
Switch.armySwitchCloseButton.Click += armySwitchClose;
因此,当按下这些实例之一时,我调用以下方法:
void armySwitchClose(object sender, EventArgs e)
上面的方法有一堆额外的代码,这里不需要。
现在我需要做的是从另一个按钮,从每个实例调用上面的函数。
我怎样才能做到这一点?
非常感谢
在每个用户控件的构造函数中,您可以传递某个知道如何运行此方法的对象的相同实例 void ArmySwitchClose(object sender, EventArgs e)
然后,您在每个事件方法中调用此方法,例如:
Public Class UserControl(){
private MakeEvent makeEvent;
Public MyClass(MakeEvent makeEvent)
{
this.makeEvent = makeEvent;
Switch.armySwitchCloseButton.Click += armySwitchClose;
}
void armySwitchClose(object sender, EventArgs e)
{
makeEvent.armySwitchClose(sender,e);
}
}
Public Class MakeEvent() {
void armySwitchClose(object sender, EventArgs e)
{
//the real implementation
}
}
希望这能解决您的问题。
哦,我想我弄错了你的问题......当你点击一个按钮时,其他UC中的所有其他事件都必须被触发,对吧? 这个问题可以用观察者模式解决
Public Interface IObserver
{
void armySwitchClose(object sender, EventArgs e);
}
Public UserControl1: Observer
{
void armySwitchClose(object sender, EventArgs e)
{
//implementation UC1
}
}
Public UserControl2: Observer
{
void armySwitchClose(object sender, EventArgs e)
{
//implementation UC2
}
}
在按钮 UC 中:
Public UserControlButton
{
private List<IObserver> observers;
public void addObserver(IObserver observer)
{
observers.Add(observer);
}
public void button_clickedEvent(object sender, EventArgs e)
{
foreach(IObserver observer in observers)
{
observer.armySwitchClose(object sender, EventArgs e);
}
}
}
在所有按钮的形式中,您调用 addObserver 添加每个用户控件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.