0

3つの子ウィンドウを持つMDIフォームがあります。

  • MDIは空から始まります。

  • 各子はメニューから一度開くことができます。

複数のウィンドウを開いて上部を閉じると、フォーカスが取得されますが、新しいアクティブな子フォームのGotFocus()イベントが発生しません。

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

2 に答える 2

2

不運な推測。EnterイベントまたはActivatedイベントのいずれかで、問題が解決します。

Windowsフォームプログラミングでは、通常、GotFocusイベントとLostFocusイベントを避けたいと思うでしょう。それらはしばしばデザイナーに隠されていますが、一貫性はありません。それぞれ、EnterイベントとLeaveイベントはそれらの代わりであり、生のWindowsメッセージではなくUIの論理状態から生成されます。検証とMDIを使用すると違いが生じます。

実際のフォーカスがそのフォームの子コントロールに移動するため、アクティブ化は「自然な」ものです。

于 2010-07-13T22:15:43.123 に答える
0

MDI親からMDI子フォームを作成する場合は、MDI親フォームをMDI子フォームのGotFocusイベントにサブスクライブする必要があります。MDI子でフォーカスイベントが発生すると、MDI親に通知されます。

フォームを閉じる/開くと、MDI Zオーダーの次の子フォームが自動的に選択されます。イベントをサブスクライブしている場合は、MDIの親が適切に行動してデータを表示できます。

于 2010-07-13T21:14:02.800 に答える