WPF 启动屏幕直到 Windows 结束加载

2024-04-07

我有一个应用程序在窗口加载时消耗大量时间。 在 Window_load 事件中,我从数据库读取一些控件的状态和名称。 我想做一个启动画面,该启动画面将在窗口完全加载后结束。

我尝试过这个例子http://www.codeproject.com/KB/dialog/wpf_animated_text_splash.aspx http://www.codeproject.com/KB/dialog/wpf_animated_text_splash.aspx但启动屏幕在主窗口完全加载之前关闭,并且我的主窗口显示为白色并且未完全加载。

我是 wpf 的初学者,我不知道如何才能让启动屏幕保留在屏幕上,直到主窗口完全加载。

请给我一个例子。

我的闪屏代码:

public partial class SplashWindow : Window
    {
        Thread loadingThread;
        Storyboard Showboard;
        Storyboard Hideboard;
        private delegate void ShowDelegate(string txt);
        private delegate void HideDelegate();
        ShowDelegate showDelegate;
        HideDelegate hideDelegate;

        public SplashWindow()
        {
            InitializeComponent();
            showDelegate = new ShowDelegate(this.showText);
            hideDelegate = new HideDelegate(this.hideText);
            Showboard = this.Resources["showStoryBoard"] as Storyboard;
            Hideboard = this.Resources["HideStoryBoard"] as Storyboard;

        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            loadingThread = new Thread(load);
            loadingThread.Start();
        }
        private void load()
        {
            Thread.Sleep(6000);

            this.Dispatcher.Invoke(showDelegate, "first data to loading");
            Thread.Sleep(6000);
            //load data 
            this.Dispatcher.Invoke(hideDelegate);

            Thread.Sleep(6000);
            this.Dispatcher.Invoke(showDelegate, "second data loading");
            Thread.Sleep(6000);
            //load data
            this.Dispatcher.Invoke(hideDelegate);


            Thread.Sleep(6000);
            this.Dispatcher.Invoke(showDelegate, "last data loading");
            Thread.Sleep(6000);
            //load data 
            this.Dispatcher.Invoke(hideDelegate);



            //close the window
            Thread.Sleep(6000);
            this.Dispatcher.Invoke(DispatcherPriority.Normal,(Action)delegate() { Close(); });
        }
        private void showText(string txt)
        {
            txtLoading.Text = txt;
            BeginStoryboard(Showboard);
        }
        private void hideText()
        {
            BeginStoryboard(Hideboard);
        }

    }

我将在 MainWindow 构造函数中调用这个启动屏幕:

new SplashWindow().ShowDialog();

但我的 MainWindow Load 函数将在启动窗口完成显示后运行。

谢谢你!


如果您使用内置SplashScreen http://msdn.microsoft.com/en-us/library/system.windows.splashscreen.aspx上课,可以打电话Show(false) http://msdn.microsoft.com/en-us/library/cc681209.aspx指定您将负责关闭启动屏幕。然后您可以使用Close() http://msdn.microsoft.com/en-us/library/system.windows.splashscreen.close.aspx方法来关闭它。

请注意,SplashScreen类仅支持显示静态图像。不过,这样做有很好的理由——尽快将启动屏幕显示在用户面前。

代码看起来像这样:

static class Entry
{
    static void Main(string[] args)
    {
        var splashScreen = new SplashScreen("path/to/your/image.png");
        splashScreen.Show(false);

        InitializeLogging();
        InitializeServices();
        InitializeUserInterface();
        InitializeWhateverElseYouNeed();

        splashScreen.Close(TimeSpan.FromSeconds(1));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 启动屏幕直到 Windows 结束加载 的相关文章

随机推荐

  • 构造函数生成默认构造函数吗?

    有没有办法通过反射来确定构造函数是否是编译器生成的默认构造函数 或者还有其他办法吗 令人惊讶的是isSynthetic方法不提供此信息 因此无法使用 并且没有Generated存在注释 public class JavaTest publi
  • Google App 脚本在电子表格中查找文本并返回位置索引

    我是谷歌应用程序脚本的新手 我的 JavaScript 也不是很强 但这似乎都不是问题 因为我的代码在第一次运行时可以工作 但当我尝试再次调用它时 它会失败 简而言之 我试图拥有一个可以动态查找给定范围内给定文本的函数 虽然看起来可能有一个
  • R 中的转置和合并列[重复]

    这个问题在这里已经有答案了 对 R 来说相当陌生 我有一个以下格式的数据集 A B C 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 但我想要这种格式 A 1 A 2 A 3 A 4 A 5 B 1 B 2 B 3 etc S
  • CakePHP 错误:无法配置会话,设置 session.auto_start 失败

    我收到此错误 Error CakeSessionException Unable to configure the session setting session auto start failed 我正在使用 Cakephp 2 2 4
  • iOS应用程序如何设置Core蓝牙广告率?

    我运行 iPad 的 iOS 应用程序广告过于频繁 随后似乎向我的嵌入式蓝牙 LE 设备发送垃圾邮件 该设备正在从 iPad 读取广告数据 如何减慢 iPad 的广告速度 Core Bluetooth 中的广告速率不可设置 没有公共 API
  • 将列表分为两列

    我正在尝试构建一个无序列表 如下所示 Item 1 Item 4 Item 2 Item 5 Item 3 Item 6 我有这个 HTML div class multi column ul li Item 1 li li Item 2
  • 如何从(静态)类中的类创建新的类实例?

    我是 Java 新手 有 C 经验 这就是我想做的 public final class MyClass public class MyRelatedClass public class OtherRandomClass public vo
  • Windows 10 - WAMP 橙色

    我已经在我的 Windows 10 企业计算机上安装了 WAMP 64 位服务器 不过我得到了一个橙色图标 我已经检查了以下内容 Apache gt 服务 启动 恢复服务呈灰色 停止服务呈红色 另外测试端口 80 还给了我 您的端口 80
  • 是否可以在 Handlebars #if 中使用函数?

    我有一个控制器对象 如下所示 MyApp objController Ember ArrayController create init function data data isValid function return data val
  • 使用 ejs 重建 webpack-dev-server

    我使用 webpack dev server 进行以下配置 import webpack from webpack import autoprefixer from autoprefixer import ExtractTextPlugin
  • 数据表 - 对多个列应用相同的函数以创建新的数据表列

    我正在使用 data table 包 我有一个数据表 代表用户在网站上的操作 假设每个用户都可以访问一个网站 并对其执行多项操作 我的原始数据表包含操作 每一行都是一个操作 我想将这些信息聚合到一个新的数据表中 并按用户访问进行分组 每次访
  • 错误:使用 Sass 的 Angular 组件中未定义变量

    我遇到此错误 看起来我没有将变量导入到组件中 但这是我的style scss You can add global styles to this file and also import other style files Foundati
  • 自定义文件中的 AppSettings

    我正在努力处理 NET 2 0 中的配置和设置类 如果以下内容包含在名为的文件中app config
  • SceneKit 修改 3D 对象并导出文件

    在我的应用程序中 我使用 SceneKit Framework 在 SCNView 中显示 3D 对象 并导出修改后的文件 并进行一些小的更改 如颜色 温度等 但在将其导出到文档文件夹后 我得到了原始文件 在这里我可以显示 3D 对象并对其
  • 将 GCC 编译器安装到 Docker 容器上

    我正在尝试将 mono 包安装到 Docker 容器上 但是 mono 需要 git autoconf libtool automake build essential mono devel gettext 包 我遇到的问题是 libtoo
  • 在 Rails ActiveRecord 验证期间更改或更新属性值

    Summary 我正在尝试更改属性的值within一个习俗ActiveModel EachValidator验证器 给出以下原型 def validate each record attribute value 试图设置value thin
  • ldd 输出静态链接到共享库

    我正在尝试创建一个共享库 libddv3djava so 我编译 libddv3djava so 的源代码 如下所示 Programming intellijprojects ddv3dbindingstest src g c Wall W
  • Numpy `ValueError:操作数无法与形状一起广播...` [重复]

    这个问题在这里已经有答案了 我使用 python 2 7 并尝试对从 1 00000000 到 3 0000000008 的一些随机数据进行预测 我的数组中有大约 196 个项目 但出现错误 ValueError operands coul
  • 在结构体中定义宏背后的逻辑是什么?

    正如标题所示 我质疑在结构体中定义宏的原因 我经常在网络编程中看到这种方法 例如以下代码片段 struct sniff tcp u short th sport source port u short th dport destinatio
  • WPF 启动屏幕直到 Windows 结束加载

    我有一个应用程序在窗口加载时消耗大量时间 在 Window load 事件中 我从数据库读取一些控件的状态和名称 我想做一个启动画面 该启动画面将在窗口完全加载后结束 我尝试过这个例子http www codeproject com KB