首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

老有关问题了,进度条的有关问题

2012-05-06 
老问题了,进度条的问题一个ListView在给ListView绑定数据的时候显示一个进度条首先通过SqlDataReader进行

老问题了,进度条的问题
一个ListView

在给ListView绑定数据的时候显示一个进度条

首先通过SqlDataReader进行读取数据 存放到一个DataTable里面


然后用For循环这个DataTable

C# code
                int j=0;                for (int i = 0; i < DataTable.Rows.Count; i++)                {                    ListViewItem lvitem = new ListViewItem(Convert.ToString(J++), i);                    lvitem.SubItems.Add(DataTable中的数据);                    this.LV_HY_Total.Items.Add(lvitem);//给窗体的ListView填充数据                }


现在我想从SqlDataReader的时候开始一直到for循环结束` 显示一个进度条`必须要是实时的``
假如有数据库有1万条数据(在查询这1万条数据的时候进度条就开始动,查询也完成了进度条就到了50%的状态,因为还有for循环)
从数据库查询完成显示为50% 在for循环结束显示100% 

最好能是一个通用的办法

[解决办法]
其实很简单,可以用BackgroundWorker

他有三个事件
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
//SqlDataReader 读到 DataTable
worker.ReportProgress(50, "查询完成");
}

private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}

private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//DataTable写到DataView
progressBar1.Value=...
}

[解决办法]
先获取总记录数,然后每获取一条 让变量+1

变量/总记录数 就是当前进度
[解决办法]
我都放到线程池里执行
[解决办法]
放另一个线程里去刷新进度条

热点排行