1

私の C# Winforms アプリには、常に最上位のモードレス検索ダイアログがあります。モードレス検索ダイアログが開いている間、ユーザーは親ウィンドウにアクセスできるため、モーダル ダイアログを開くことも選択できます。モードレス ダイアログは常に最前面にあるため、モーダル ダイアログが見えにくくなりますが、モーダル ダイアログは他のすべてのウィンドウに対するユーザー操作をロックアウトするため、この時点でユーザーがモードレス ダイアログを閉じることはできません。

現在、モーダルウィンドウを開く前にモードレス検索ダイアログを閉じるコードを手動で追加することで、これを回避しています。より良い解決策があるかどうか疑問に思っています。

4

2 に答える 2

0

検索ダイアログは常に一番上にある必要がありますか? 目的がメイン フォームの上に浮かせるだけの場合は、メイン フォームを検索ダイアログの親として設定するだけで十分ではないでしょうか。そうすれば、常に最上位である必要はなく、常に最前面に表示されます。

それ以外の場合は、検索ダイアログがアプリで何が起こっているかをリッスンし、それに応じて手順を実行します。(これは、イベントから、アプリ内のすべてのフォームの共通ベース フォーム、システム全体でウィンドウのアクティブ化/非アクティブ化をリッスンする CBT フックまで、さまざまな方法で解決できます。)

于 2009-09-09T07:51:08.973 に答える
0

モーダル ダイアログを呼び出す前に、モードレス ダイアログを最前面に表示しないようにしてから、それを復元するのはどうですか?

modeless.TopMost = false;
// show modal dialog here
modeless.TopMost = true;
于 2009-09-07T09:29:53.630 に答える