【C#】如何在查詢資料庫表並顯示到DataGridV中的進度條動態顯示?
阿新 • • 發佈:2019-01-27
在實際應用中 ,如果要查詢的資料十分多,需要新增進度條顯示,告知使用者程式沒有假死,在程式中新增進度條視窗,在點選查詢按鈕時,開啟此進度條視窗,委託執行緒新增進度條的值,先走一步,表示程式沒有死,查詢以後,走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)這個函式是寫在進度條窗口裡得函式:
public void SetProcBar(int ratio) { ProgressBar.Increment(ratio); double jindu = ((Convert.ToDouble(ProgressBar.Value)) / (Convert.ToDouble(ProgressBar.Maximum))) * 100; label1.Text = "當前查詢和顯示進度= " + Convert.ToString(jindu); System.Windows.Forms.Application.DoEvents(); }
//2.查詢完後,進度條走49步
BarForm.Invoke(new Action(delegate { BarForm.SetProcBar(49); }));
MessageBox.Show("查詢完畢,現在開始顯示,請您耐心等候","查詢完畢,正在顯示。。。");
//同樣加上MessageBox,//3.在顯示到DataGridView的for迴圈 中
if (index % (viewdt.Rows.Count / 50) == 0) { int addVal = 1; BarcForm.Invoke(new Action(delegate {BarForm.SetProcBar(addVal); })); }