class Form1 : Form
{
...
void SoSomething()
{
var f2 = new Form2();
f2.ShowDialog(null);
}
void SoSomethingElse()
{
var f2 = new Form2();
f2.ShowDialog(this);
}
}
从我目前的测试来看,似乎这两个方法是相同的,ShowDialog
似乎自动将其所有者设置为调用它的形式(如果没有设置)(ShowDialog
的参数是null
)
但是我有一个创建这种表单的控制台应用程序。我想知道在这种情况下对话框的所有者是什么。我没有找到任何文档描述在向null
提供ShowDialog
时究竟发生了什么。
答案 0 :(得分:1)
从Reference Source开始,程序似乎试图获取活动窗口。
git config --global -e
对于控制台应用程序,没有,c:\windows\system32\.gitconfig
为IntPtr hWndActive = UnsafeNativeMethods.GetActiveWindow();
IntPtr hWndOwner = owner == null ? hWndActive : Control.GetSafeHandle(owner);
且hWndActive
为空。所以表格没有所有者。
实际上,the same behavior为IntPtr.Zero
,因为它只调用:
owner
所以基本上这只是一个没有所有者的表格。没什么特别的。它就像一个独立的窗口。
作为旁注:您不应在不使用ShowDialog()
的情况下从控制台应用程序打开表单。它确保Win32消息循环已启动并正在运行。