Window.Show 方法

定义

打开窗口并返回,而不等待新打开的窗口关闭。

public:
 void Show();
public void Show ();
member this.Show : unit -> unit
Public Sub Show ()

例外

对正在关闭 (Show()) 或已经关闭 (Closing) 的窗口调用 Closed

示例

以下示例演示如何打开无模式窗口。

// Initialize window
Window window = new Window();

// Show window modelessly
// NOTE: Returns without waiting for window to close
window.Show();
' Initialize window
Dim window As New Window()

' Show window modelessly
' NOTE: Returns without waiting for window to close
window.Show()

注解

Window实例化类时,默认情况下它不可见。 Show 显示一个窗口并立即返回,而无需等待窗口关闭。 因此,打开的窗口不会阻止用户与应用程序中的其他窗口交互。 这种类型的窗口称为 无模式 窗口。 无模式窗口的常见示例包括属性窗口、工具箱和调色板。 若要限制用户与特定窗口交互,必须通过调用 ShowDialog来打开窗口。

通过调用 Show 打开的窗口不会自动与打开它的窗口有关系;具体而言,打开的窗口不知道哪个窗口打开了它。 可以使用 属性建立此关系, Owner 并使用 OwnedWindows 属性进行管理。

调用 Show 可实现与将 对象的 Visible属性Window设置为 Visibility 相同的最终结果。 但是,从计时角度来看,这两者之间存在差异。

调用 Show 是一种同步操作,仅在引发子窗口上的 事件后 Loaded 返回:

Window w = new Window();
w.Loaded += delegate { System.Console.WriteLine("This is written first."); };
w.Show();
System.Console.WriteLine("This is written last.");
Dim w As New Window()
AddHandler w.Loaded, Sub() System.Console.WriteLine("This is written first.")
w.Show()
System.Console.WriteLine("This is written last.")

但是,设置 Visibility是立即返回的异步操作:

Window w2 = new Window();
w2.Loaded += delegate { System.Console.WriteLine("This is written last."); };
w2.Visibility = Visibility.Visible;
System.Console.WriteLine("This is written first.");
Dim w2 As New Window()
AddHandler w2.Loaded, Sub() System.Console.WriteLine("This is written last.")
w2.Visibility = Visibility.Visible
System.Console.WriteLine("This is written first.")

设置 Visibility时,在设置 Visibility 之前注册的任何窗口事件都可能不会引发,直到在其中设置 Visibility 的方法完成执行。

适用于

另请参阅