【问题标题】:WPF application window appears on top of SplashScreenWPF 应用程序窗口出现在 SplashScreen 的顶部
【发布时间】:2010-12-10 13:45:30
【问题描述】:

我按照How to: Add a Splash Screen to a WPF Application 中列出的简单步骤将启动画面添加到我的 WPF 应用程序。当我启动应用程序时,会显示初始图像,然后会弹出主窗口,并且初始图像会逐渐消失。

我的问题是当主窗口弹出时,它出现在启动图像的顶部。然后当启动图像开始淡出时,启动图像再次弹出到顶部。最终结果是,当主窗口出现时,启动图像会在一瞬间消失。

如何强制主窗口出现在启动画面下方,让启动画面不消失?

【问题讨论】:

    标签: wpf splash-screen


    【解决方案1】:

    这不是默认行为,您必须有一些手动聚焦主窗口的代码?

    使用如下代码手动关闭淡入淡出可能更容易:

    _splash = new SplashScreen("LoadingScreen.png");

    _splash.Show(false);

    _splash.Close(TimeSpan.Zero);

    【讨论】:

    • 我会看看是否有一些代码在做焦点;它可能来自第三方组件。由于我使用资源的构建操作添加了启动画面,我将如何像您一样访问它...?
    • 在您的 app.cs 文件中声明一个全局字段“protected SplashScreen _splash;”。在构造函数中有上面的前两行代码。在所有启动逻辑完成后,在方法末尾的 OnStartup 事件中插入上面的最后一行代码。应该是这样的。
    【解决方案2】:

    不确定这是否会有所帮助,但如果您将启动画面的所有者设置为当前表单,那么这应该可以解决问题吗?

    _splash.Owner = this;
    

    否则你可以看这里:

    Splash Screen Example

    这也可能有帮助。

    【讨论】:

      【解决方案3】:

      在 .NET 4.0 中,overload 已添加到 Show 方法中,允许在初始屏幕窗口上设置窗口样式 WS_EX_TOPMOST。用这样的代码显示启动画面:

      SplashScreen splash = new SplashScreen("SplashScreen.png");
      splash.Show(autoClose: true, topMost: true);
      

      我从方法中调用它

      protected override void OnStartup(StartupEventArgs e)
      

      在 App.xaml.cs 中。

      “SplashScreen.png”当然是嵌入应用程序资源中的启动图像的标识符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-29
        • 2013-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 2010-11-06
        • 2011-11-10
        相关资源
        最近更新 更多