【问题标题】:Start two windows in sequence from App.xaml.cs WPF从 App.xaml.cs WPF 依次启动两个窗口
【发布时间】:2018-05-02 10:03:26
【问题描述】:

我想让用户在MainWindow 出现之前登录。

第一个窗口显示,工作正常,关闭所有其他 WindowName.ShowDialog() 调用后不起作用。

我的代码: 在 app.xaml 中,我删除了 StartupUri 并将其替换为

Startup="Application_Startup"

看起来像这样(App.xaml.cs):

private void Application_Startup(object sender, StartupEventArgs e)
{
    Window1 window1 = new Window1();
    window1.ShowDialog();

    MainWindow window2 = new MainWindow();
    window2.ShowDialog();
}

我有两个完全不变的窗口(除了标题)第二个看起来一样:

<Window x:Class="Delete_Me.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Delete_Me"
        mc:Ignorable="d"
        Title="First window" Height="300" Width="300">
    <Grid>

    </Grid>
</Window>

后面的代码也没有改动。

问题 如何按顺序从 App.xaml.cs 启动两个窗口? 或者有什么更好的方法来做到这一点?

我的方法 我试图换掉这两个窗口,但没有任何改变。

当然,我可以在构造函数中启动 LoginForm/OnLoadedMainWindow,但这似乎不是解决问题的好方法。

如果身份验证失败,我什至不想启动MainWindow

有什么建议吗?谢谢。

【问题讨论】:

    标签: c# wpf xaml app.xaml


    【解决方案1】:

    如果不存在更多窗口,则 WPF 应用程序将退出。这意味着在创建第二个窗口之前关闭第一个窗口后,您的应用程序将停止。

    要解决您的问题,您需要在关闭第一个窗口之前创建第二个窗口。只需将您的代码更改为

    Window1 window1 = new Window1();
    MainWindow window2 = new MainWindow();
    
    window1.ShowDialog();
    window2.ShowDialog();
    

    修复它。

    【讨论】:

    • 哦,我不知道。谢谢你的回答!
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多