[英]How to detect a mdi child's control event?
我一直在網上看,但找不到我想要做的答案。 我正在創建一個MDI應用程序,在子窗體上是一個DataGrid。 我需要弄清楚如何在子表單上訂閱該DataGrid的DoubleClick事件。
所以,讓我們說Form1是父母。 Form2是孩子。 我打開了Form2:
Form2 f = new Form2 { Text = "Child", MdiParent = this };
f.Show();
當用戶以該格式(f)雙擊數據網格時,我需要能夠檢測到它。 誰能指出我正確的方向?
(我希望這清楚地解釋了)
您可以使用System.Windows.Forms.Control
類中的DataGrid
類繼承的myDataGrid.DoubleClick
private void Form_Load()
{
myDataGrid.DoubleClick += MyDataGridOnDoubleClick;
}
private void MyDataGridOnDoubleClick(object sender, EventArgs eventArgs)
{
//throw new NotImplementedException();
}
AppDeveloper的答案就是您所需要的,但我感覺您的問題的核心可能是Form2的DataGrid相對於父MDI容器(Form1)的默認可見性。 Form1可以訂閱Form2的DataGrid中的任何事件,但僅限於DataGrid被標記為公共 (或內部 )。 默認情況下,該子控件將標記為私有 ,因此僅對Form2可見。
因此,如果您只是將DataGrid的訪問修飾符從私有更改為公共 ,您應該能夠從Form1中偵聽其事件,如下所示:
Form2 childForm = new Form2();
childForm.MdiParent = this;
// Form2.myDataGrid must be public/internal
childForm.myDataGrid.DoubleClick += new EventHandler(MyDataGridOnDoubleClick);
childForm.Show();
如果你想避免組件之間的緊密耦合,有更好的方法來處理這個問題,但這是你的情況下從A到B的最短路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.