Aboutダイアログでこれについて考えていますが、他の場所(検索ボックスなど)にも適用できると確信しています
これがだまされている場合は申し訳ありませんが、これを見つけることができなかったか、親の上にあるだけであるという最後の部分を明確にする方法を見つけることができませんでした。常に親フォームの上にあり、モーダルではなく、他のアプリを覆い隠していないフォームを作成するにはどうすればよいでしょうか?
これを試してダイアログを開きます:
FindDialog fd = new FindDialog();
fd.Show(this);
重要なのは、ダイアログの所有者を割り当てることです。
あなたが何を意味するのか正確にはわかりません。Form.ShowDialog は、アプリケーションがシングル スレッドでない限り、アプリケーションではなく、親に関してのみモーダルです。
たとえば、次のように構成されたこれをテストするアプリを作成しました。
mainform: 2 つのボタン。それぞれが frmDialog1 を作成して ShowDialog を呼び出すスレッドを開始します。
frmDialog1: frmDialog2 を作成し、その上で ShowDialog を呼び出す単一のボタン。
frmDialog2: 何もしません (つまり、空白)
それらがすべて実行されているとき、メインフォームにアクセス/ドラッグできました。ダイアログ 2 を表示するボタンをクリックしていない場合にのみ、frmDialog1 (両方のバージョン) でも同じことができます。