0

对于 C# 来说仍然相对较新,我试图让我的头脑围绕适合我的应用程序的后台工作人员和进度条,以下代码显示我正在向 datagridview 添加一个新列,然后用零填充新列的所有单元格(0)。为此实现后台工作人员和进度条的最佳方法是什么。整个过程大约需要 15 秒,因此需要一个进度条来向用户显示正在发生的事情。

添加和填充新列的代码如下:

//Creates new column in the datagridview
        DataGridViewColumn newCol = new DataGridViewColumn();
        newCol.CellTemplate = new DataGridViewTextBoxCell();
        newCol.HeaderText = tbAddSupp.Text.ToUpper();
        newCol.Name = tbAddSupp.Text.ToUpper();
        newCol.Visible = true;
        dgvStock.Columns.Add(newCol);

        cbSuppList.Items.Clear();
        cbSuppList2.Items.Clear();

        //Adds the default 0 value to all the cells in the new column
        //ITS TOO SLOW THOUGH....!!!!!
        int cellVal = 0;
        foreach (DataGridViewRow row in dgvStock.Rows)
        {
            for (int r = 0; r < dgvStock.Rows.Count - 1; r++)
            {
                dgvStock.Rows[r].Cells[newCol.Name.ToString()].Value = cellVal;
            }
        }
4

1 回答 1

3

这很慢,因为您要执行两次相同的循环。我认为这就足够了:

int cellVal = 0;
foreach (DataGridViewRow row in dgvStock.Rows)
{
    row.Cells[newCol.Name.ToString()].Value = cellVal;
}

事实上,如果你只有 100 行,你的循环运行了 100 * 100 = 10000 次!

于 2012-04-11T10:03:58.390 回答