假设我们有以下代码:
void App_Startup(object sender, StartupEventArgs args)
{
MessageBox.Show("something");
}
应用程序启动时调用的:
<Application x:Class="AppClass.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="App_Startup"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
当我在没有SplashScreen
的情况下运行它时,它会按预期运行(即等待点击OK
),但是当与SplashScreen
一起运行时,消息框会与{{1}一起消失}}。
这是正常行为还是错误?
答案 0 :(得分:3)
如果您显示MessageBox并且没有明确设置父级,则会发生这种情况。该窗口将隐式地将其自身从任何当前活动的窗口(在这种情况下,启动屏幕)中移除。在Win32世界中,如果关闭窗口,则所有子窗口也将关闭。如果您明确地将MessageBox的父级设置为另一个窗口,那么您就可以了。
答案 1 :(得分:2)
试试这个,
SplashScreen Show的第二个参数(false,false
)方法是指定splashscreen是否应该是最顶层的。
void App_Startup(object sender, StartupEventArgs args)
{
SplashScreen screen = new SplashScreen("SplashImage.png");
screen.Show(false, false);
MessageBox.Show("something");
splashScreen.Close(TimeSpan.FromSeconds(1));
}