1. 程式人生 > >【C#】如何在查詢資料庫表並顯示到DataGridV中的進度條動態顯示?

【C#】如何在查詢資料庫表並顯示到DataGridV中的進度條動態顯示?

在實際應用中 ,如果要查詢的資料十分多,需要新增進度條顯示,告知使用者程式沒有假死,在程式中新增進度條視窗,在點選查詢按鈕時,開啟此進度條視窗,委託執行緒新增進度條的值,先走一步,表示程式沒有死,查詢以後,走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); }));
                        
                    }