我正在使用WPF中的SplashScreen功能,通过将位图的Build Action设置为Splashscreen来实现。在启动屏幕后,正在检查许可信息,如果失败则显示一个MessageBox。
根据这个反馈,这是因为MessageBox.Owner是启动屏幕,即使打开另一个窗口,即使是MessageBox,启动屏幕窗口也会关闭,然后依次关闭MessageBox,因此用户永远看不到MessageBox。
因此解决方法是将MessageBox.Owner设置为另一个窗口,但这意味着我必须实例化另一个可能不需要的窗口。
是否可以将MessageBox.Owner设置为桌面窗口? 如何操作,因为我所想到的唯一其他功能是GetDesktopWindow() api函数,但它返回一个窗口句柄,而 MessageBox.Owner 是一个 WPF 窗口。
Visibility=Visibility.Hidden
并不是必需的,因为你无论如何都要显示窗口。相反,为了避免背景窗口的闪屏显示,我使用了:new Window { WindowState = WindowState.Minimized, ShowInTaskbar = false }
。 - splintornew Window { AllowsTransparency = true,ShowInTaskbar=false,WindowStyle=WindowStyle.None, Background=Brushes.Transparent}
可以使窗口完全隐藏,而设置可见性或窗口状态会导致在调用Show()
时窗口显示几毫秒。 - kiran