簡體   English   中英

如何檢測mdi孩子的控制事件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM