c#中ShowDialog()和ShowDialog(IWin32Window)有什么区别?

Jon*_*ter 5 c# winforms

双方ShowDialog();ShowDialog(IWin32Window);似乎做同样的事情对我来说.文档也不是很清楚.

我被告知ShowDialog(IWin32Window);将确保对话窗口位于作为所有者窗口传入的内容之上.

MSDN文档没有提到这一点,所以感觉有点像黑魔法.

Blu*_*kMN 9

http://msdn.microsoft.com/en-us/library/w61zzfwe.aspx非常清楚该参数代表了所有者窗口.这就是所有者窗口的行为 - 它保留在子窗口后面并且不会关闭,让其子窗口仍然显示.

  • 我缺少的那部分是ShowDialog()将当前活动窗口作为父窗口.在大多数情况下,这将导致ShowDialog()和ShowDialog(IWin32Window)的行为相同,至少对用户而言.但是如果你打开了大量的窗口,并且在多个线程上运行后台进程并将它们调回UI线程,那么你可以获得一些非常有趣的行为. (2认同)

Jon*_*nor 5

调用ShowDialog()时,当前活动窗口成为对话框的所有者.如果要指定特定所有者,请使用此方法的其他版本(ShowDialog(IWin32Window)).

这在MSDN文档中说明.

http://msdn.microsoft.com/en-us/library/c7ykbedk.aspx