0

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

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

但现在我需要制作一个进度条,同时从数据库中读取数据。

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

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

我有一个代码,但它工作不正确(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;
    }
4

1 回答 1

1

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

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

作为替代方案,您可以做的是:

  1. 将您的 SQL 调用放在BackgroundWorker中。MSDN 上有很好的例子,而且非常容易使用。
  2. 当您调用 BackgroundWorker 时,这会释放您的 UI 以运行某种“请稍候”控件。由于您不知道 SQL 命令何时结束,因此至少您可以设置某种控制来让用户知道程序正在“处理”。
  3. 一旦 BackgroundWorkerRunWorkerCompleted发生,您可以删除您的 Please Wait 并绑定您的数据。
于 2012-04-22T13:54:43.573 回答