我有一个表格,需要坐在其他两个表格之上。它也应该最小化它位于上面的两种形式之一。我发现这可以像我所说的那样工作
form.Show(null);
但是,form.Show()
无法正常工作。为什么?我意识到我将所有者作为参数传递,但所有者为null。那么为什么表单表现正确呢?
答案 0 :(得分:10)
请注意,Show()是Control类的一个方法,Show(IWin32Window)是Form类的一个方法。这是Show(IWin32Window)方法的烘焙行为 - 如果所有者为null,则活动窗口将用作所有者。 Control.Show()没有Owner的概念。您可以通过MS reference来源或反编译器进行确认。
IntPtr hWndActive = UnsafeNativeMethods.GetActiveWindow();
IntPtr hWndOwner = owner == null ? hWndActive : Control.GetSafeHandle(owner);
答案 1 :(得分:2)
当您将null作为所有者窗口传递时,您强制Show(所有者)方法重载以自行查找所有者。它将选择活动窗口。这通常是你想要但不总是那个。没有什么好理由可以旋转这个命运之轮。
我没有得到“show()不起作用”的部分问题。如果您在没有参数的情况下调用Show(),那么表单将没有所有者。