【问题标题】:C# - How To Use ProgessBar While DataGridView FillingC# - 如何在 DataGridView 填充时使用进度条
【发布时间】:2019-02-19 02:20:58
【问题描述】:

我有一个 DataGridView,它有很多行。加载需要很长时间。我想在加载时添加一个 ProgressBar。如何在我的代码中添加带有 manquee 样式的 ProgressBar。 (P.S.:我不知道我的 DataGridView 的行数,它每次都会改变。)

这是我的代码;

     conection.Open();
     string[] ss = listBox2.SelectedItem.ToString().Split(' ');
     int countss = ss.Count();
     for (int mi = 0; mi < countss; mi++)
     {
         string mq = "select c1, c2, c3 from myTableName WHERE c1='" + ss[mi] + "' OR c2='" + ss[mi] + "'";
         SqlDataAdapter s = new SqlDataAdapter(mq, connection);
         DataTable d = new DataTable();
         s.Fill(d);
         foreach (DataRow r in d.Rows)
         {
             dgv1.Rows.Add(r["c1"].ToString() + " " + r["c2"].ToString(), r["c3"]);
         }
     }
     //Some insignificant operations...
     for (int mi2 = 0; mi2 < cmn; mi2++)
     {
         string mq2 = "select c1, c2, c3 from myTableName WHERE c1='" + cmn[mi2] + "' OR c2='" + cmn[mi2] + "'";
         SqlDataAdapter s2 = new SqlDataAdapter(mq2, conection);
         DataTable d2 = new DataTable();
         s2.Fill(d2);
         foreach (DataRow r2 in d2.Rows)
         {
             dgv2.Rows.Add(r2["c1"].ToString() + " " + r2["c2"].ToString(), r2["c3"]);
         }
     }
     coneciton.Close();

【问题讨论】:

  • 创建一个带有进度条的新表单。使用 form.show() 运行表单,然后每次添加行时更新进度条上的值,总行数可以从 d.rows.count 获得,使用它可以计算总完成度。如果你想使用显示对话框,那可能会很棘手
  • @Anil 嗨,先生。你有关于我如何做到这一点的示例代码或文章吗?我是一个新的编码员。有时我很难理解。谢谢...
  • 可以不用foreach吗?
  • DataGridView.DataSource上进行谷歌搜索。
  • 此外,正如我之前所说,您应该寻找更快加载数据的方法。添加进度条只会花费更长的时间。

标签: c# datagridview datatable progress-bar


【解决方案1】:
private void button1_Click(object sender, EventArgs e)
    {

        DataTable g = new DataTable();
        int rowCount = g.Rows.Count;
        Progress_tracker pForm = new Progress_tracker();
        pForm.Show();
        int rCount =0;
        foreach (DataRow r in g.Rows)
        {
            //do somethin

            pForm.progressBar1.Value = 100*rCount++ / rowCount;
        }
    }

这是关于如何更新的代码示例

private void InitializeComponent()
    {
        this.progressBar1 = new System.Windows.Forms.ProgressBar();
        this.SuspendLayout();
        // 
        // progressBar1
        // 
        this.progressBar1.Location = new System.Drawing.Point(37, 64);
        this.progressBar1.Name = "progressBar1";
        this.progressBar1.Size = new System.Drawing.Size(354, 23);
        this.progressBar1.TabIndex = 0;
        // 
        // Progress_tracker
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(530, 154);
        this.Controls.Add(this.progressBar1);
        this.Name = "Progress_tracker";
        this.Text = "Progress_tracker";
        this.ResumeLayout(false);

    }

这是 Progresstracker 窗口的设计器代码,它只有一个控件一个进度条,请记住将其修饰符保持公开,以便您可以在课堂外访问它,即通过主窗体

【讨论】:

  • 你好。你是如何生成 Progress_tracker 的?
  • 它只是一个带有公共访问进度条的表单,创建一个表单,添加进度条,将修饰符更改为公共,添加新表单右键单击您的项目名称添加表单
  • 好的。我会试试的。
猜你喜欢
  • 2011-06-06
  • 2021-07-30
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多