2012-05-24 30 views
1

在我的應用程序中,用戶可以打開多個表單。檢測哪種形式真的活躍?

一些形式是MDI,有些不是。

如何檢測,如果它是一個活動的形式或任何(MDI或不)形式?

從MSDN

Form.ActiveForm屬性的解釋):

可以使用此方法來獲取對當前活動 形式的參考來執行的形式,或者它的控制上的操作。如果您的 應用程序是多文檔界面(MDI)應用程序,請使用 ActiveMdiChild屬性來獲取當前活動的MDI子項 窗體。

我有2種可能性,一種用於MDI,另一種用於非MDI,但如果我將這兩種形式都打開,我如何檢測其中哪些是真正活動的呢?

回答

0

,你需要你可以把這樣的邏輯:

 if (Form.ActiveForm == null) return; 

     if (Form.ActiveForm == this.MdiParent) 
     { 
      if (MdiParent.ActiveMdiChild != null) 
       Debug.WriteLine(MdiParent.ActiveMdiChild.Text); 

      return; 
     } 

     Debug.WriteLine(Form.ActiveForm.Text); 

Form.ActiveFormreturn the non-MDI form是currenly活躍。如果活動窗體是MDI父窗口(主窗口),則這意味着MDI窗體處於活動狀態,因此我們看看MdiParent.ActiveMdiChild

此示例寫入Form文本以進行調試,但您可以使用任何方式的信息希望。

+0

(Form.ActiveForm == null)當我打開MDI時。 – serhio

+0

我跑了樣本,它的行爲如預期。你的MDI是主要的應用程序形式嗎?您還可以修改代碼並檢查MdiParent.ActiveMdiChild –

+0

我忘記了注意,此代碼段旨在從主應用程序表單的子代中執行。如果你從主窗體運行這個,那麼MDIParent屬性沒有意義。 –