0

noch relativ neu in C#, ich versuche, meinen Kopf um den Hintergrund Arbeiter und Fortschrittsbalken für meine App geeignet zu bekommen, der folgende Code zeigt, dass ich eine neue Spalte zu einem Datagridview hinzufügen und dann füllen Sie alle Zellen der neuen Spalte mit eine Null (0). Was wäre der beste Weg, um den Hintergrundarbeiter und Fortschrittsbalken dafür zu implementieren. Der gesamte Vorgang dauert ungefähr 15 Sekunden. Daher ist ein Fortschrittsbalken erforderlich, um dem Benutzer zu zeigen, dass etwas passiert.Hintergrund Arbeiter und Fortschrittsbalkenimplementierung für zusätzliche Spalte in Datagridview?

Der Code für das Hinzufügen und die neue Spalte Füllung ist wie folgt:

//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

Ich denke, du stellst die falsche Frage. "Wie man das (erscheint) schneller macht" wäre die richtige Frage ... – jeroenh

Antwort

3

Es ist langsam, da Sie die gleiche Schleife zweimal tun werden. Ich denke, das ist genug:

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

In der Tat, wenn Sie nur 100 Zeilen Ihre Schleife haben wurde von 100 * 100 = 10000 mal läuft!

+0

Bisher besteht meine Datagridview aus 4220, so dass ich jetzt weiß, warum es so lange gedauert hat, danke für das Aufzeigen, es funktioniert sofort und keine Notwendigkeit für die BGW oder Fortschrittsbalken. Ich danke dir sehr. – Rg786

+0

@ Rg786 Gern geschehen. Schön, dass ich dir geholfen habe. – Dummy01

+0

+1 für das Lesen in Ordnung – V4Vendetta