【问题标题】:c# winform loading screen [duplicate]c#winform加载屏幕[重复]
【发布时间】:2016-06-24 17:01:22
【问题描述】:

我想在函数中添加加载表单

private async void Test()
{
    // 1, show loading form

    await DoTest();

    //2, close loading form
}

加载窗体需要阻塞主窗体,一开始我尝试运行窗体ShowDialog(),但它会停止以下功能

最好的办法是什么?

我的最终解决方案:

private async void Test()
{
    // 1, show loading form
    var loadingScreen = new LoadingForm();
    Task.Factory.StartNew(delegate
    {
        Invoke((Action)delegate
        {
            loadingScreen.ShowDialog(App.Views.Forms.RobotActiveView);
        });
    });

    await DoTest();

    //2, close loading form
    Invoke((Action)delegate
    {
        loadingScreen.Close();
    });
}

【问题讨论】:

  • 加载表单的重点是防止用户交互吗?
  • @AlexW 是的,作为下载功能,加载数据等等……
  • @CodyGray 在启动应用程序时不显示启动画面。用于等待“BIG”功能的加载屏幕
  • @CodyGray 这不是重复案例......

标签: c# .net winforms async-await


【解决方案1】:

显示加载表单并禁用当前表单。

this.Enabled = false;

var loadingForm = new LoadingForm();
loadingForm.Show();

...

loadingForm.Close();

this.Enabled = true;

【讨论】:

  • 好主意,给了我一个灵感,但是我的程序是MVP,所以我会尝试在Presenter中禁用表单。
猜你喜欢
  • 2013-03-27
  • 2022-10-24
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多