我一直在网上看,但找不到我想要做的答案。我正在创建一个MDI应用程序,在子窗体上是一个DataGrid。我需要弄清楚如何在子表单上订阅该DataGrid的DoubleClick事件。
所以,让我们说Form1是父母。 Form2是孩子。 我打开了Form2:
Form2 f = new Form2 { Text = "Child", MdiParent = this };
f.Show();
当用户双击该格式的数据网格(f)时,我需要能够检测到它。有人能指出我正确的方向吗?
(我希望这清楚地解释了)
答案 0 :(得分:1)
您可以使用myDataGrid.DoubleClick
班级DataGrid
班级继承的System.Windows.Forms.Control
private void Form_Load()
{
myDataGrid.DoubleClick += MyDataGridOnDoubleClick;
}
private void MyDataGridOnDoubleClick(object sender, EventArgs eventArgs)
{
//throw new NotImplementedException();
}
答案 1 :(得分:1)
AppDeveloper的答案就是您所需要的,但我感觉您的问题的核心可能是Form2的DataGrid相对于父MDI容器(Form1)的默认可见性。 Form1可以订阅Form2的DataGrid中的任何事件,但前提是DataGrid标记为 public (或内部)。默认情况下,该子控件将标记为私有,因此仅对Form2可见。
因此,如果您只是将DataGrid的访问修饰符从私有更改为 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的最短路径。