DOBON.NETプログラミング道掲示板

No34597 の記事


■34597 / )  Re[3]: 新たにshowしたフォームでのボタンのクリック
□投稿者/ 魔界の仮面弁士 大御所(1309回)-(2020/12/11(Fri) 10:17:43)
  • アイコンNo34596に返信(未熟者ケンイチさんの記事)
    > どうも「1回目のクリックでフォームがアクティブ?になり、
    > 2回目のクリックでボタンクリックが認識されている」感じです。

    そのあたりの動作は、コントロールによっても異なっており、
    たとえば Button と ToolStripButton でも異なる動作となります。
    具体的には、非アクティブフォームの ToolStripButton をクリックした場合、
    初回はボタンが動作せず、単にフォームがアクティブ化するだけで、
    2 回目のクリックで、ようやくボタンが押されることになります。

    もしも一回のクリックでアクティブ化とボタン動作を同時にこなしたい場合、
    該当コントロールの WndProc をオーバーライドして、
    WM_MOUSEACTIVATE 時の戻り値を、MA_ACTIVATEANDEAT から
    MA_ACTIVATE に差し替える必要が生じます。
    https://docs.microsoft.com/ja-jp/windows/win32/inputdev/wm-mouseactivate
    https://docs.microsoft.com/en-us/archive/blogs/rickbrew/how-to-enable-click-through-for-net-2-0-toolstrip-and-menustrip


    あるいは、コントロールの種類が他のフォームの場合と同様であるのに
    該当フォームだけ動作が異なるというのであれば、継承フォームや
    NativeWindow クラスで処理されている可能性、あるいは別の UI スレッドで
    動作していたために、フォーカス遷移が阻害されている箇所があったなどの
    理由かもしれません。ソースを追わないと何とも言えないですが。
違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -