2010-07-13 139 views
0

我有一個帶3個子窗口的MDI窗體。GotFocus()和MDI兒童

  • MDI開始爲空。

  • 每個孩子都可以從菜單中打開一次。

當我打開多個窗口,並關閉頂部應該獲得焦點,但新的活動子窗體的GotFocus()事件不會觸發。

Private Sub frmMain_gotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus 
... 
End Sub 

回答

1

不幸的猜測。 Enter或Activated事件將解決您的問題。

在Windows窗體編程中,您通常希望避免GotFocus和LostFocus事件。他們通常隱藏在設計師身上,但並不一致。 Enter和Leave事件分別是它們的替代品,它們是從UI的邏輯狀態而不是原始Windows消息生成的。使用驗證和MDI時有所不同。

激活是「自然」的一個,因爲實際焦點移動到該形式的子控件。

0

當您創建從MDI父MDI子表單,您應該訂閱MDI父窗體MDI子窗體的GotFocus事件。當您的MDI Child發生任何焦點事件時,您的MDI Parent會得到通知。

當窗體關閉/打開,在MDI Z順序下一子窗體應自動選中,如果你訂閱的情況下,你的MDI家長可以採取適當的行動,並顯示您的數據。