- ベストアンサー
モーダルダイアログで発生するイベント(C#)
C#で、FormをShowDialog()、つまりモーダルダイアログで表示してからの話です。 ここで、当のForm以外をマウスでクリックしたりすると、当のFormのタイトルバーがチカチカしますよね。 このとき、当のFormにはどんなイベントが発生しているのでしょうか? 当のForm以外をクリックしたときに、「ダイアログのボタンを押して、値を選択してください」のようなメッセージを出したいと思っています。 そのために、そのイベントを使えばいいのかな、と思いました。 どうぞ、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 もっと違ったアプローチがあるかもしれませんが WM_WINDOWPOSCHANGINGメッセージを捕まえてはどうでしょうか。 仮にForm1からForm2をモーダルで呼び出したとして protected override void WndProc(ref Message m) { // WM_WINDOWPOSCHANGING...0x0046 if ( m.Msg == 0x0046 ) { System.Diagnostics.Debug.Write("キタコレ!"); } base.WndProc(ref m); } Form2がFlashされるタイミングで 上記のデバッグ用文字列が出力されます。 そうでない時も同じイベントを拾いますが パラメータを見たりしてうまく判断できかもしれません。 参考URLにWM_WINDOWPOSCHANGINGメッセージの詳細があります。
お礼
情報ありがとうございました。 最終的には、m.Msgが 0x46 → 0x86(m.Param==0x00) → 0x86(m.Param=0x01) の3連コンボの時が、そのタイミングであることがわかりました。 どうもありがとうございました。