我不知道该怎么做,下面是示例代码。我想做的事。
public Class MainForm : Form
{
MyUserControl MyControl = new MyUserControl;
private void Button_Click(object sender, EventArgs e)
{
//Create MyEvent
}
}
public Class MyUserControl : UserControl
{
//listen for MyEvent from MainForm, and perform MyMethod
public void MyMethod()
{
//Do Stuff here
}
}
最佳答案
第 1 步)在 MainForm 上公开一个事件......比如说......
public event Action simpleEvent
步骤 2) 为 MyUserControl 提供一个构造函数,该构造函数采用 MainForm 的实例并将操作绑定(bind)到该事件
public MyUserControl(MainForm form) {
form += () => Console.WriteLine("We're doing something!")
}
第 3 步)在 MainForm.Button_Click 中引发事件
if(simpleEvent != null) simpleEvent();
注意:您可以注册自己的委托(delegate)并使用 lambda 表达式以外的东西。参见 http://msdn.microsoft.com/en-us/library/17sde2xt.aspx以获得更详尽的解释
你的最终结果看起来像......
public Class MainForm : Form
{
public event Action MyEvent;
MyUserControl MyControl = new MyUserControl(this);
private void Button_Click(object sender, EventArgs e)
{
if(simpleEvent != null) simpleEvent();
}
}
public Class MyUserControl : UserControl
{
//listen for MyEvent from MainForm, and perform MyMethod
public MyUserControl(MainForm form) {
simpleEvent += () => MyMethod();
}
public void MyMethod()
{
//Do Stuff here
}
}
关于C#,如何创建一个事件并在另一个类中监听它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10566617/