class Form1 : Form
{
...
void SoSomething()
{
var f2 = new Form2();
f2.ShowDialog(null);
}
void SoSomethingElse()
{
var f2 = new Form2();
f2.ShowDialog(this);
}
}
を設定されていることは、これらの2つの方法が同一であり、ShowDialog
思わ自動的ShowDialog
に設定されていない場合は、それを呼び出したフォーム(引数にその所有者を設定しているようだですnull
)。Form.ShowDialogは私の現在のテストから
しかし、私はこのようなフォームを作成するconsole-appを持っています。その場合、ダイアログの所有者が何であるか不思議です。 null
〜ShowDialog
を提供するときに、正確に何が起こっているかを説明するドキュメントは見つかりませんでした。
[This](https://msdn.microsoft.com/en-us/library/system.windows.forms.form.owner(v = vs.110).aspx)は、私が知っている唯一のものです所有者の関係。所有者のいないダイアログは独立したウィンドウのように振る舞い、何の問題も起こらないはずです。 –
ダイアログは常に所有者がいなければなりません。指定していない場合は、そのプロセスが所有している現在アクティブなウィンドウを選んで1つを探します。これは、このようなコードを脆弱にし、適切な所有者を見つけることができず、デスクトップウィンドウに戻らなければならないという不安です。それは悪いです、あなたのアプリは、ダイアログが閉じるときにフォアグラウンドを失います。それ以降に作成するウィンドウは、他のプロセスが所有するウィンドウで覆われていることもあります。 –