簡體   English   中英

為什么Window.ShowDialog運行應用程序?

[英]Why Window.ShowDialog runs the application?

我嘗試在runnig wpf應用程序之前打開對話框窗口:

public class Program
{
    [STAThread]
    public static void Main(string[] args)
    {
        var app = new App();
        var win = new MainWindow();
        if (win.ShowDialog().GetValueOrDefault())
        {
            app.Run();  
        } 
    }
}

class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        var win = new Window1();
        win.Show();
    }
}

為什么win.ShowDialog()運行應用程序(執行app.OnStartup)? 但是,win.Show()無法運行該應用程序

    [STAThread]
    public static void Main(string[] args)
    {
        var app = new App();
        var win = new MainWindow();
        win.Show();
        app.Run();
    }

為什么會這樣呢???

謝謝

ShowDialog開始其自己的消息循環。 它的作用與Application.Run幾乎相同,並且由於您已經創建了該應用程序的實例,因此已經發送了啟動消息(運行,分派),並將由ShowDialog的消息循環(分派器)進行解釋。 Show基本上僅將消息發送到隊列,因此除非有消息循環處理消息,否則它不會執行任何操作。

如果要在注冊啟動之前顯示對話框,請不要在顯示對話框之前創建應用程序實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM