我有三个窗口,假设按此顺序出现:
启动窗口
选择窗口
工作窗口,这是主窗口
启动窗口应显示3秒钟,我已经这样做了,并且工作正常:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
loadingThread = new Thread(load);
loadingThread.Start();
}
private void load()
{
Thread.Sleep(3000);
//close the window
this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate() { Close(); });
}
在该选择窗口出现之后,该工作窗口应该出现。
Mainwindow代码在这里:
public partial class MainWindow : Window
{
private MainWindowViewModel mainWindowViewModel;
public MainWindow()
{
InitializeComponent();
this.mainWindowViewModel = new MainWindowViewModel(this);
base.DataContext = this.mainWindowViewModel;
SplashWindow wnd = new SplashWindow("text");
wnd.ShowDialog();
}
}
告诉我如何按顺序打开窗口
在选择窗口还有一件事,按下后我有一个按钮,我的工作窗口应该来了。
答案 0 :(得分:1)
修改强>
不使用async
& await
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// Create and show SplashWindow
SplashWindow splashWindow = new SplashWindow();
splashWindow.Show();
var thread = new System.Threading.Thread(p =>
{
System.Threading.Thread.Sleep(3000);
Dispatcher.Invoke(() =>
{
// Create and show the SelectionWindow
SelectionWindow selectionWindow = new SelectionWindow();
selectionWindow.Show();
// Hide the SplashWindow we previosly created
splashWindow.Close();
});
});
thread.Start();
}
}
示例应用的要点:click here
我假设这是你项目的结构:
首先,在App.xaml
上删除StartupUri
属性,使其显示如下:
<Application x:Class="WpfApplication2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
</Application.Resources>
</Application>
然后,在App.xaml.cs
上,覆盖OnStartup
:
async protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// Create and show SplashWindow
SplashWindow splashWindow = new SplashWindow();
splashWindow.Show();
// Let's wait 3 seconds
await Task.Delay(3000);
// Create and show the SelectionWindow
SelectionWindow selectionWindow = new SelectionWindow();
selectionWindow.Show();
// Hide the SplashWindow we previosly created
splashWindow.Close();
}
然后,在SelectionWindow
中,添加一个包含点击事件的按钮:
private void Button_Click(object sender, RoutedEventArgs e)
{
// Create and show MainWindow
var mainWindow = new MainWindow();
mainWindow.Show();
// Closes SelectionWindow
this.Close();
}