数据从数据库读取时需要进度条

时间:2012-04-22 13:35:33

标签: windows winforms

我的进度条有问题。我有一个按钮(SELECT * FROM Table)。

当我点击它时,我想在datagridview中显示数据。没关系,工作正常。

但是现在我需要创建一个进度条,而数据正在从DB中读取。

默认情况下,进度条可见为false。在阅读时 - 可见的进度条是真实的。

当从DB读取数据时,可见的进度条应该再次为假。

我有一个代码,但它的工作原理不正确(1.进度条有问题等等)也许你可以提供另一种变体?

 private void button3_Click(object sender, EventArgs e)
 {
    timer1.Start();         
 }

 private void timer1_Tick(object sender, EventArgs e)
 {
        progressBar1.Visible = true;
        progressBar1.Minimum = 10;
        progressBar1.Maximum = 100;

        progressBar1.Increment(+10);
        if (progressBar1.Value == 90)
        {         
            groupBox3.Enabled = true;
            connect con = new connect();
            DataTable data = connnection.query("SELECT * FROM User WHERE surname LIKE '" + textBox1.Text + "%'");
            dataGridView1.DataSource = tb;

        }
        if(progressBar1.Value == 100)
          progressBar1.Visible = false;
    }

1 个答案:

答案 0 :(得分:0)

你需要重新思考你的逻辑。

当您将SQL调用视为在程序外部运行的代码时,意味着您只能启动它并等待它完成,但您将无法访问内部进程,例如它的进展程度。

您可以选择做什么:

  1. 将您的SQL调用放在BackgroundWorker中。在MSDN上的很好的例子,非常容易使用。
  2. 当您调用BackgroundWorker时,会释放您的UI以运行某种“请等待”控件。由于您不知道SQL命令何时结束,至少您可以设置某种控件以让用户知道该程序是“正在处理”。
  3. 一旦BackgroundWorker的RunWorkerCompleted发生,您就可以删除“请等待”并绑定数据。