C# 如何检测mdi子项';什么是控制事件?

C# 如何检测mdi子项';什么是控制事件?,c#,events,mdi,C#,Events,Mdi,我一直在网上寻找,但是找不到我想要做的事情的答案。我正在创建一个MDI应用程序,子窗体上有一个DataGrid。我需要弄清楚如何订阅子窗体上DataGrid的双击事件 所以,假设Form1是父级。 表格二是儿童。 我已经打开了Form2,如下所示: Form2 f = new Form2 { Text = "Child", MdiParent = this }; f.Show(); 当用户双击该表单(f)中的datagrid时,我需要能够检测到它。谁能给我指出正确的方向吗 (我希望解释清楚)您

我一直在网上寻找,但是找不到我想要做的事情的答案。我正在创建一个MDI应用程序,子窗体上有一个DataGrid。我需要弄清楚如何订阅子窗体上DataGrid的双击事件

所以,假设Form1是父级。 表格二是儿童。 我已经打开了Form2,如下所示:

Form2 f = new Form2 { Text = "Child", MdiParent = this };
f.Show();
当用户双击该表单(f)中的datagrid时,我需要能够检测到它。谁能给我指出正确的方向吗

(我希望解释清楚)

您可以使用类从类继承的


AppDeveloper的答案是您所需要的,但我觉得您的问题的核心可能是Form2的DataGrid相对于父MDI容器(Form1)的默认可见性。Form1可以订阅Form2的DataGrid中的任何事件,但前提是DataGrid标记为public(或internal)。默认情况下,该子控件将标记为private,因此仅对Form2可见

因此,如果您只是将DataGrid的访问修饰符从private更改为public,您应该能够从Form1中侦听其事件,如下所示:

Form2 childForm = new Form2();
childForm.MdiParent = this;
// Form2.myDataGrid must be public/internal
childForm.myDataGrid.DoubleClick += new EventHandler(MyDataGridOnDoubleClick);
childForm.Show();
如果您希望避免组件之间的紧密耦合,有更好的方法来处理此问题,但在您的情况下,这是从A到B的最短路径

Form2 childForm = new Form2();
childForm.MdiParent = this;
// Form2.myDataGrid must be public/internal
childForm.myDataGrid.DoubleClick += new EventHandler(MyDataGridOnDoubleClick);
childForm.Show();