0

まだ比較的新しいC#の新機能です。バックグラウンドワーカーとプログレスバーの周りを自分のアプリに合わせようとしています。次のコードは、新しい列をdatagridviewに追加して、新しい列のすべてのセルをゼロ(0)。このためにバックグラウンドワーカーとプログレスバーを実装する最善の方法は何でしょうか。 プロセス全体には約15秒かかります。そのため、ユーザーに何か起こっていることを示すプログレスバーが必要です。次のようにdatagridviewの追加列のバックグラウンドワーカーとプログレスバーの実装?

新しい列を追加し、充填するためのコードは次のとおりです。

//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; 
      } 
     } 
+0

私は間違った質問をしていると思います。 'これを(速く)表示する方法は正しいのでしょうか... ... – jeroenh

答えて

3

あなたは二度同じループをやっているので、それは遅いです。

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

実際には100行しかない場合、ループは100 * 100 = 10000回実行されています。

+0

これまでの私のdatagridviewは4220で構成されています。だから私はなぜそれが長かったのかを知っています。 bgwまたはプログレスバーの必要はありません。どうもありがとうございます。 – Rg786

+0

@ Rg786ようこそ。私があなたを助けてくれてうれしい。 – Dummy01

+0

+1それをうまく読んでください – V4Vendetta

関連する問題