c# - 显示加载窗口

标签 c# .net wpf window loading

我在 WPF 中的应用程序加载外部资源,所以我想在程序加载时显示加载表单。

我尝试创建表单,并在加载代码之前显示,并在加载结束时关闭。

private void Window_Loaded(object sender, RoutedEventArgs e)
{
     LoadForm lf = new LoadForm();
     lf.Visibility = Visibility.Visible;

     // Al code that delays application loading

     lf.Close();
}

但我唯一得到的是当加载进度完成并立即关闭时显示表单。

我认为我需要使用 System.Threading 但不确定。

谢谢。

注意 我在 Window_Loaded() 方法中而不是在主类方法中加载所有应用程序外部资源。

最佳答案

您应该查看这篇关于创建 SplashScreen 的 MSDN 文章在 WPF 中。本质上,您将要显示的图像添加到您的项目并将构建操作设置为 SplashScreen,它将在您的程序启动时显示,并在您的主应用程序窗口显示时消失。


您也可以尝试导入 System.ComponentModel 类并使用 BackgroundWorker显示您的加载表单,它将允许您保持 UI 的响应能力。

public partial class MainWindow : Window
{
    Window1 splash;
    BackgroundWorker bg;
    public MainWindow()
    {

        InitializeComponent();

        bg = new BackgroundWorker();
        bg.DoWork += new DoWorkEventHandler(bg_DoWork);
        bg.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bg_RunWorkerCompleted);

    }

    void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        splash.Hide();
    }

    void bg_DoWork(object sender, DoWorkEventArgs e)
    {
        System.Threading.Thread.Sleep(10000);
    }


    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        splash = new Window1();
        splash.Show();
        bg.RunWorkerAsync();
    }
}

关于c# - 显示加载窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13835790/

相关文章:

c# - 使用 int 和 String 的 LINQ to SQL C# 函数

时间:2019-03-17 标签:c#DataContractJsonSerializer返回null

c# - 通过 C# 删除 SQL Server 数据库

.net - 当接收者仍然需要更新他们的读取存储时,CQRS 如何帮助减少锁争用?

wpf - TabControls 中的延迟加载 (MVVM)

WPF 数据绑定(bind) - 数据绑定(bind)的完整解释

javascript - 单击按钮时文件上传丢失内容

c# - 如何在不强制用户使用库的 IOC 容器的情况下编写库

.net - PWA : Keep user logged in

c# - WPF代码分析: CA1001 Types that own disposable fields should be disposable