スキップしてメイン コンテンツへ

 none
Windows Forms の MDI アプリケーションで ActiveX コントロールを使用すると、マウス クリックで子ウィンドウの切り替えができなくなる RRS feed

  • 全般的な情報交換

  • こんにちは、Platform SDK (Windows SDK) サポートチームです。
    今回は Windows Forms の MDI アプリケーションで、子ウィンドウがタイトルバーでしか切り替えられなくなる現象をご案内します。

    現象
    Windows Forms で MDI アプリケーションを作成した場合、MDI の子ウインドウは、タイトル バーやクライアント領域をクリックすることで、前面のウィンドウを切り替えることができます。
    以下のスクリーンショットでは、ChildForm 1 内のマウス カーソルの位置をクリックしています。

    図1 (クライアント領域をクリック)


    図2 (前面のウインドウが切り替わります)



    しかし、ActiveX コントロールが配置された子ウィンドウを表示すると、それ以降、クライアント領域をクリックしても、ウィンドウが切り替わりません。(図3)
    以下のスクリーンショットは先ほどと異なり、ActiveX コントロールが配置された ChildForm 2 を表示した状態で、先ほどと同じ位置をクリックした結果です。
    ChildForm 2 から切り替わっていません。

    図3 (切り替えられない操作)


    タイトルバーをクリックした場合は切り替えることができます。

    図4 (切り替えられる操作)



    ChildForm 1だけでなく、ActiveX コントロールが配置された ChildForm 2も、タイトルバーをクリックしないと切り替えることができません。


    回避策
    子ウィンドウの MouseDown イベントに、以下のような明示的に切り替える実装を追加することで回避できます。

        Private Sub Form_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
           Me.Activate()
        End Sub


    実装の追加ができない場合は、タイトルバーでの切り替え操作をご利用ください。

    2019年4月11日 8:58
    所有者