c# - C# WinForms 帮助实现 BackgroundWorker 和加载表单
问题描述
我想要达到的目标:
第 1 步:当表单加载时,我想显示一个加载表单(作为对话框),其中包含一个进度条和一个进度标签。
第 2 步:在发生这种情况时,我想运行 a
BackgroundWorker
以从数据库中检索记录并填充我的DataTable
. 将BackgroundWorker
更新已完成阶段的加载表格。步骤 3:当所有记录都被检索到后,关闭 Loading Form 并将记录显示在
DataGridView
注意事项:
DataGridView
绑定到我的DataSet.[Table]
.加载窗体是 Windows 窗体而不是
MessageBox
.我正在使用 Visual Studio 2017 社区版。
我计划将此实现用于我的所有数据库交互,例如更新等。
问题 :
如何更新加载表单上的进度条和进度标签控件
bgwTransactionListing_ProgressChange
我
bgwTransactionListing_DoWork
真的没有做任何工作。
代码
这是代码Form_Load
namespace MyApplication
{
public partial class frmTransactionListing : Form
{
public frmTransactionListing()
{
InitializeComponent();
}
frmload LoadingForm = new frmload();
private void frmTransactionListing_Load(object sender, EventArgs e)
{
bgwTransactionListing.RunWorkerAsync();
}
这是我的代码BacgroundWorker_DoWork
:
private void bgwTransactionListing_DoWork(object sender, DoWorkEventArgs e)
{
try
{
bgwTransactionListing.ReportProgress(0, "Loading Records");
System.Threading.Thread.Sleep(100);
bgwTransactionListing.ReportProgress(100, "Completed");
}
catch (Exception ex)
{
MessageBox.Show("We have encountered an error and cannot proceed. Error: " + ex.Message);
}
}
这是我的代码BacgroundWorker_ProgressChanged
:
private void bgwTransactionListing_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if(e.ProgressPercentage == 0)
{
LoadingForm.ShowDialog();
}
}
这是我的代码BackgroundWorker_RunWorkerCompleted
。这是我试图关闭加载表单的地方:
private void bgwTransactionListing_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
dgTransactionList.Refresh();
}
高级 感谢您的所有帮助。
更新 1:我禁用了加载表单并尝试打开 Table Adapter Fill 方法,
RunWorkerCompleted
现在DataGridView
正在显示记录。我认为填充方法是从我的数据库中检索记录的过程。显然不是。更新2:在应用@russelrillema @Jimi 的建议后,我已经用我目前拥有的代码更新了代码。现在,我可以显示和关闭加载自。我也更新了我的问题。
解决方案
推荐阅读
- mysql - SQL 用户订购了 n 件以上的产品
- wordpress - add_action 在条件外有效,但不在条件内
- c# - 反序列化枚举 C#
- sql - 如何在需要拆分的字段上执行连接?
- ibm-midrange - 如何在 Windows 10 中更改 AS400 / IBM 的背景颜色?
- python - Odoo8 - 通过给定的用户和数据范围从 Python 生成报告
- node.js - 是否可以从 serverless.yml 生成 expressJS 应用程序?
- bash - 在某些情况下通过过滤器管道输入的bash函数,否则将输入通过不变
- graphql - 不同 GraphQL 指令的说明
- azure-devops - 无法从其他项目签出 repos