第 1 步)在 MainForm 上公开一个事件……比如说……
public event Action simpleEvent
步骤 2) 为 MyUserControl 提供一个构造函数,该构造函数采用 MainForm 实例并将操作绑定到该事件
public MyUserControl(MainForm form) {
form += () => Console.WriteLine("We're doing something!")
}
步骤 3) 在 MainForm.Button_Click 中引发事件
if(simpleEvent != null) simpleEvent();
注意:您可以注册自己的委托并使用 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
}
}