2010-12-11 11 views
0

Ich habe 10 Zeilen in Datagrid-Ansicht ... ich benutze V S 2010 Wie kann ich eine Backcolor von ungeraden und geraden Zeilen ändern ..? Ich versuche mein Bestes, aber ich habe einen Fehler, der ist: Index war außerhalb des Bereichs. Muss nicht negativ und kleiner als die Größe der Sammlung sein. Parametername: IndexWie kann ich eine Backcolor von ungeraden und geraden Zeilen in der Datagrid-Ansicht ändern?

wie kann ich eine einzelne Spalte Hintergrundfarbe nach allen Zeilen machen Hintergrundfarbe gesetzt

ich meinen Code auf Formularladeereignis schreiben .. mein Code in vb.net (Windows-Formular) ist wie folgt:

Dim CountR As Integer 
    CountR = 0 
    While CountR <= DataGridView1.RowCount 

     If CountR Mod 2 = 0 Then 
          DataGridView2.Rows(CountR).DefaultCellStyle.BackColor = Color.Pink 
     Else 
     DataGridView2.Rows(CountR).DefaultCellStyle.BackColor = Color.SkyBlue  

     End If 
     CountR = CountR + 1 
    End While 

Antwort

3

Wenn ich mich nicht irre ich denke, es ist nur, dass Sie die Zeile ändern müssen:

While CountR <= DataGridView1.RowCount 

zu

While CountR < DataGridView1.RowCount 

Mit anderen Worten ist der höchste Index eins weniger als die rowcount.

Oder vielleicht könnten Sie einfach mit so etwas wie diese (wahrscheinlich einige Fehler in diesem, aus dem Speicher ohne IDE getippt) den gesamten Code ersetzen:

Dim c as Color = Color.Pink 
For Each row As DataGridViewRow In DataGridView1.Rows 
    row.DefaultCellStyle.BackColor = c 
    c = If(c = Color.Pink, Color.SkyBlue, Color.Pink) 
End 

Welche tun sollten: Für jede Zeile, um die Farbe zu ändern, und nachdem Sie eine Farbe verwendet haben, wechseln Sie zu der anderen, bis alle Zeilen farbig sind.

2

Ich bin ziemlich neu zu vb.net und VS 2008, aber neulich las ich über datagridview und fand diese article in MSDN. Es gibt eine Eigenschaft von datagridview namens AlternatingRowsDefaultCellStyle, die die Hintergrundfarbe von Zeilen für ungerade (oder gerade) Zeilen überschreibt. Es wird auf diese Weise:

dataGridView1.RowsDefaultCellStyle.BackColor = Color.LightGray 
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray 

Ich hoffe, es ist das, was Sie suchen (und ich entschuldige mich, wenn auch nicht ...).

3

Das für/während ist ein falscher Weg! Wenn Sie viele Datensätze haben, kann der Code langsam sein.

Ich denke, das ist der richtige Weg:

Dim cs As New System.Windows.Forms.DataGridViewCellStyle 
cs.BackColor = Color.Aqua 
Me.DataGridView1.AlternatingRowsDefaultCellStyle = cs 
3

Try this:

<code> 
    For each row in datagridviewrow in datagridview1.rows 
    If not row.index/2 = int(row.index/2) then row.defaultcellstyle.backcolor = color.{your color choice} 
    Next 
</code> 

Dies wird odds Ihre eine Farbe machen, während Evens weiß bleiben.

+0

'Für jede Zeile in Datagridviewrow in Datagridview1.rows sollte' Für jede Zeile In Datagridview1.rows' sein. Das ist eine schöne Lösung. – bendecko

1

Sie können dies ohne Code tun, indem Sie Folgendes tun; 1. Klicken Sie auf die Datagridview 2. Geben Sie im Eigenschaftenfenster unter Aussehen, AlternatingRowDefaultCellStyle klicken Finsternisse 3. Es wird ein Fenster angezeigt, in dem Sie mehrere Änderungen an dem Datagrid (die, die Sie ändern wollen, machen kann, ist ‚Backcolor‘)

Verwandte Themen