将子控件的click事件传递给父控件

我有一个Windows窗体,有一个窗格,其中包含另一个派生自Windows窗体的类。 它包含在窗格中作为控件。 它本身包含两个按钮。

我希望子控件的事件一直传递到父窗口。 例如,窗格中的子窗口有一个Cancel按钮,该按钮应该关闭它。 我想要父控件,也就是关闭主窗口,但是如何拦截子控件的按钮单击事件?

我可以修改子控件,但只有在没有其他方法以正确的方式实现这一点时,我宁愿避免它。

虽然您可以直接从子项与父表单进行交互,但最好通过子控件引发一些事件并以父表单的forms订阅事件。

从孩子那里举起活动:

 public event EventHandler CloseButtonClicked; protected virtual void OnCloseButtonClicked(EventArgs e) { var handler = CloseButtonClicked; if (handler != null) handler(this, e); } private void CloseButton_Click(object sender, EventArgs e) { //While you can call `this.ParentForm.Close()` it's better to raise an event OnCloseButtonClicked(e); } 

在Parent中订阅和使用事件:

 //Subscribe for event using designer or in form load this.userControl11.CloseButtonClicked += userControl11_CloseButtonClicked; //Close the form when you received the notification private void userControl11_CloseButtonClicked(object sender, EventArgs e) { this.Close(); }