【C#】如何在查询数据库表并显示到DataGridV中的进度条动态显示?

本文介绍了在C#中如何实现在查询大量数据库数据并将其显示到DataGridV时,通过进度条动态展示查询和加载进度。通过使用线程和委托,当点击查询按钮时,开启进度条窗口,先执行查询操作,然后在数据填充到DataGridV的循环过程中逐步更新进度条,从而提供实时的进度反馈,确保用户体验。
摘要由CSDN通过智能技术生成

在实际应用中 ,如果要查询的数据十分多,需要添加进度条显示,告知用户程序没有假死,在程序中添加进度条窗口,在点击查询按钮时,打开此进度条窗口,委托线程添加进度条的值,先走一步,表示程序没有死,查询以后,走49步,走一半,然后,在后面的显示到DataGridView时,在显示的for循环中逐步加,达到动态显示,实时显示程序的运行进度。

1,点击按钮时,出现进度条窗口

BarcForm = new MainForm.BarcForm();
                BarcForm.Show();
                BarcForm.Invoke(new Action(delegate { BarForm.SetProcBar(1); }));
 MessageBox.Show("开始查询,请您耐心等候", "开始查询");




//添加MessageBox是为了让进度条走的步数显示出来,如果不加这个MessageBox,那么进度条走的这一步,要等下一条进度条走了步数后,这一步才会显示出来(即直到数据库查询完成后,最开始的一步才会显示,而查询完后走的那49步,要等在for循环里面才会显示出来),

//SetProcBar(int ratio)这个函数是写在进度条窗口里得函数:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C#查询数据库显示进度条,可以使用`BackgroundWorker`控件来实现。以下是实现步骤: 1. 创建一个`BackgroundWorker`控件和进度条控件。 ```c# BackgroundWorker worker = new BackgroundWorker(); ProgressBar progressBar = new ProgressBar(); ``` 2. 在`DoWork`事件编写查询数据库的代码,并在查询过程更新进度条的值。 ```c# worker.DoWork += (sender, e) => { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM MyTable", conn); int count = (int)cmd.ExecuteScalar(); cmd.CommandText = "SELECT * FROM MyTable"; using (SqlDataReader reader = cmd.ExecuteReader()) { int i = 0; while (reader.Read()) { // 处理查询结果 i++; int progress = (int)((double)i / count * 100); worker.ReportProgress(progress); } } } }; ``` 3. 在`ProgressChanged`事件更新进度条的值。 ```c# worker.ProgressChanged += (sender, e) => { progressBar.Value = e.ProgressPercentage; }; ``` 4. 启动`BackgroundWorker`控件并显示进度条。 ```c# worker.RunWorkerAsync(); progressBar.ShowDialog(); ``` 完整的代码如下: ```c# BackgroundWorker worker = new BackgroundWorker(); ProgressBar progressBar = new ProgressBar(); worker.DoWork += (sender, e) => { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM MyTable", conn); int count = (int)cmd.ExecuteScalar(); cmd.CommandText = "SELECT * FROM MyTable"; using (SqlDataReader reader = cmd.ExecuteReader()) { int i = 0; while (reader.Read()) { // 处理查询结果 i++; int progress = (int)((double)i / count * 100); worker.ReportProgress(progress); } } } }; worker.ProgressChanged += (sender, e) => { progressBar.Value = e.ProgressPercentage; }; worker.RunWorkerAsync(); progressBar.ShowDialog(); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值