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可实现与将Window对象Visible属性设置为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 完成执行的方法之后引发。

适用于

另请参阅