【问题标题】:"please wait" messagebox in vb.net“请稍候” vb.net 中的消息框
【发布时间】:2022-08-16 17:45:14
【问题描述】:

我需要在 vb.net 中创建一个“请稍候”消息框,以便在我加载数据时执行,最好的方法是什么?我知道 vb.net 没有这种类型的消息框。

  • 所以首先加载数据中需要在后台线程上,然后您可以在加载同时发生时在 UI 线程上显示对话框/自定义表单/动画/进度条。我在这里多次提到的优秀例子vbforums.com/…
  • 上面链接的线程是我的一个。 Here 是另一个对这个问题更具体的问题。它使用相同的BackgroundWorker 组件,但它还提供了在后台工作进行时显示的模式对话框,这正是您在这里所要求的。该对话框可以选择显示ProgressBar,它可以是字幕或显示实际进度,具体取决于您可以实际测量的内容。
  • 您可以使用进度条....

标签: vb.net


【解决方案1】:

正如建议的那样,数据加载应该使用异步任务完成。这保证了你的 UI 在后台进程中保持响应,否则长任务在 UI 线程上运行,阻塞它直到任务完成。

这是处理后台任务并向用户显示要求等待的窗口的一种非常简单的方法。

public partial class MainWindow : Window
{
    internal WaitWindow waitMessage = new();

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        StartLoading();
    }

    private Task LoadData() // Return type is Task
    {
        // Your data loading process

        Thread.Sleep(3000); // simulates execution time

        return Task.CompletedTask; // Return information of task completed
    }

    private async void StartLoading() // Note that the method must be marked async
    {
        waitMessage.Show(); // Display wait window
        Task loadData = new(() => LoadData());
        loadData.Start();
        await loadData; // The await keyword is used to asynchronously wait the task completion
        waitMessage.Hide(); // Hide wait window.
    }
}

为了防止用户关闭等待窗口,请在其 xaml 文件中添加WindowStyle=None

请注意,根据您的完整应用程序架构,这可能不是可用的最佳选项,但它是最简单的选项之一。

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2014-05-12
    相关资源
    最近更新 更多