簡體   English   中英

C#WPF應用程序啟動錯誤

[英]C# WPF Application startup error

我正在嘗試在應用程序中制作類似登錄窗口的內容。 當然,我知道登錄窗口不應啟動主窗口-這就是為什么我這樣更改App.xamlApp.xaml.cs原因:

<Application x:Class="WpfApp2.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:WpfApp2"
         >
<Application.Resources>

</Application.Resources>

我在App.xaml.cs覆蓋了該事件:

protected override void OnStartup(StartupEventArgs e)
    {
        try
        {
            LoginForm loginForm = new LoginForm();
            MainWindow mainWindow = new MainWindow();
            bool result = (bool)loginForm .ShowDialog();
            if(result)
            {
                mainWindow.Show();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

該代碼可以正常工作,但對我來說卻不好,因為我還想將一些參數推入MainWindow構造函數中。 因此,如果我將代碼更改為此:

protected override void OnStartup(StartupEventArgs e)
    {
        try
        {
            LoginForm loginForm = new LoginForm();
            bool result = (bool)loginForm .ShowDialog();
            if(result)
            {
                MessageBox.Show("I am here");
                MainWindow mainWindow = new MainWindow();
                mainWindow.Show();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

如果我運行此代碼-我將看到我的登錄表單,在按“確定”按鈕后,我將看到“我在這里”,然后它就變成了異常。 請幫幫我。 如何解決這個問題? 如果沒有足夠的代碼,我會添加它

我的登錄窗口如下所示(Xaml和Xaml.cs):

<Window x:Class="WpfApp2.LoginForm"
    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:WpfApp2"
    mc:Ignorable="d"
    Title="Hello" Width="480" Height="370">
    <Grid>
    <Button Content="Click Me" Width="100" Height="100" Click="SetDialogResultOK">
    </Grid>
<Window.Resources>
</Window.Resources>
</Window>


 public partial class LoginForm : Window
 {
     public LoginForm()
     {
         InitializeComponent();
     }

     private void SetDialogResultOK(object sender, RoutedEventArgs e)
     {
         DialogResult = true;
     }
 }

我的主窗口沒有任何有趣的內容。 這是一個簡單的窗口

您可以將ShutdownMode屬性設置為ShutdownMode.OnExplicitShutdown ,然后在MainWindow關閉時關閉應用程序:

protected override void OnStartup(StartupEventArgs e)
{
    Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
    try
    {
        LoginForm loginForm = new LoginForm();
        bool result = (bool)loginForm.ShowDialog();
        if (result)
        {
            MessageBox.Show("I am here");
            MainWindow mainWindow = new MainWindow();
            mainWindow.Closed += (ss, ee) => App.Current.Shutdown();
            mainWindow.Show();
        }
        else
        {
            App.Current.Shutdown();
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

暫無
暫無

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

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