[英]C# WPF Application startup error
我正在嘗試在應用程序中制作類似登錄窗口的內容。 當然,我知道登錄窗口不應啟動主窗口-這就是為什么我這樣更改App.xaml
和App.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.