Form.Show(null)是什么意思?

我有一个表格,需要坐在其他两个表格之上。 它也应该最小化它位于上面的两种forms之一。 我发现这就像我所说的那样有效

form.Show(null);

但是, form.Show()不能像所描述的那样工作。 为什么? 我意识到我将所有者作为参数传递,但所有者为null。 那么为什么表单表现正常呢?

请注意,Show()是Control类上的方法,Show(IWin32Window)是Form类上的方法。 这是Show(IWin32Window)方法的烘焙行为 – 如果所有者为null,则活动窗口将用作所有者。 Control.Show()没有Owner的概念。 您可以通过MS参考源或反编译器进行确认。

 IntPtr hWndActive = UnsafeNativeMethods.GetActiveWindow(); IntPtr hWndOwner = owner == null ? hWndActive : Control.GetSafeHandle(owner); 

当您将null作为所有者窗口传递时,您强制显示(所有者)方法重载以自行查找所有者。 它将选择活动窗口。 这通常是你想要的但不总是。 没有什么好理由可以旋转这个命运之轮。

我没有得到“show()不起作用”的部分问题。 如果你不带参数调用Show(),那么表单将没有所有者。