So ändern Sie die Zeile Farbe in datagridview?
Möchte ich ändern die Farbe einer bestimmten Zeile in meinem datagridview. Die Zeile sollte geändert werden, um rot, wenn der Wert der columncell 7 ist kleiner als der Wert in columncell 10. Irgendwelche Vorschläge auf, wie dies zu erreichen?
InformationsquelleAutor EB. | 2010-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine Schleife durch die Zeilen im datagridview-und dann vergleichen Sie die Werte der Spalten 7 und 10 in jeder Zeile.
Versuchen Sie dies:
EB ich neue code in den code, den Sie zur Verfügung gestellt. Ihre Syntax wurde aus ein wenig, versuchen Sie, den code, den ich gerade oben Hinzugefügt.
Ricardo. Ich geändert .text .Wert und verändert, um DefaultCellstyle.Backcolor = Farbe.rot und der code hat funktioniert!!! Vielen Dank für Ihre Zeit! EB
InformationsquelleAutor Ricardo Sanchez
Ich wurde nur untersucht dieses Problem (also ich weiß, diese Frage wurde veröffentlicht, vor fast 3 Jahren, aber vielleicht hilft es ja jemand...), aber es scheint, dass eine bessere option ist, den code innerhalb der
RowPrePaint
Ereignis, so dass Sie nicht haben, um die traverse in jeder Zeile, nur diejenigen, die lackiert werden (so wird es viel besser auf große Datenmengen:Befestigen der Veranstaltung
Den Ereignis-code,
Ich mag, wie Sie fangen die problem an der Wurzel, anstatt zu warten, bis, nachdem alles, was gemalt wurde. Dies ist ein sehr "außerhalb der box" - Ansatz. Die meisten Menschen würden lieber nur eine Schleife durch jede Zeile wieder...
Viel schneller! Vielen Dank für diesen Hinweis
Neben sehr viel schneller, es hilft auch, es zu tun zur richtigen Zeit. Ich hatte Probleme mit meinen Zeilen nicht immer farbig, wahrscheinlich, weil ich die Farbe einstellen, die zur falschen Zeit. Mit diesem Ansatz, es ist garantiert passieren zur richtigen Zeit.
InformationsquelleAutor Eden
Du suchst die
CellFormatting
Veranstaltung.Hier ist ein Beispiel.
InformationsquelleAutor SLaks
Ich hatte Mühe, ändern Sie den text Farbe wie auch - ich sah nie die Farbe ändern.
Bis ich den code Hinzugefügt, ändern Sie den text Farbe nach der Veranstaltung
DataBindingsComplete
fürDataGridView
. Nach, dass es geklappt hat.Ich hoffe, dies wird den Menschen helfen, die das gleiche problem haben.
text Farbe nicht ändern, wenn im onLoad(..) überschreiben, oder die Veranstaltung. DataBindingsComplete ist viel besseren Ort, um die Farbe, die Einstellung der Zeilen.
InformationsquelleAutor user1614017
Etwas wie die folgenden... vorausgesetzt, die Werte in den Zellen sind die ganzen zahlen.
ungetestet, also bitte entschuldigt etwaige Fehler.
Wenn Sie wissen, die bestimmte Zeile, können Sie überspringen der iteration:
diese code-Zeile (dgvr.Zellen[7].Wert < dgvr.Zellen[10].Wert) jetzt gibt mir diese Fehlermeldung Operator '<' angewendet werden kann nicht auf Operanden vom Typ 'Objekt' und 'Objekt'
Stießen Sie auf ganze Zahl, dann. 🙂 so etwas wie: Konvertieren.ToInt32(dvgr.Zellen[7].Wert) < Umwandeln.ToInt32(dgvr.Zellen[10].Wert)
InformationsquelleAutor Demi
Einige Menschen verwenden gern die
Paint
,CellPainting
oderCellFormatting
Veranstaltungen, aber beachten Sie, dass das ändern einer Formatvorlage in diese Ereignisse verursacht rekursive Aufrufe. Wenn SieDataBindingComplete
es wird nur einmal ausführen. Das argument fürCellFormatting
ist, dass es aufgerufen wird, nur auf sichtbare Zellen, so dass Sie nicht haben, um format nicht sichtbaren Zellen, sondern formatieren Sie Sie mehrfach.InformationsquelleAutor Denise Skidmore
Können Sie Ändern
Backcolor
Zeile für Zeile über deinen Zustand.und diese Funktion rufen Sie nach der AnwendungDatasource
vonDatagridView
.Hier Wird die Funktion für, die.
Kopieren Sie einfach und setzen Sie es nach
Databind
InformationsquelleAutor pratik1020
InformationsquelleAutor christopher
Dies ist meine Lösung, um Farbe zu ändern, um dataGridView mit bindingDataSource:
InformationsquelleAutor daniele3004
Wenn Sie binden an eine (Sammlung) von konkreten Objekten, die Sie bekommen können, die das konkrete Objekt über den DataBoundItem-Eigenschaft der Zeile. (Um zu vermeiden, prüfen für magic strings in der Zelle, und mit "echten" Eigenschaften des Objekts)
Programm-Beispiel unten:
DTO/POCO
Bindung an das datagridview
dann der event-handler und immer das konkrete Objekt (anstelle eines DataGridRow und/oder Zellen)
InformationsquelleAutor granadaCoder
Ich in der Regel Wie zu verwenden das GridView.RowDataBound-Ereignis-Ereignis für diese.
InformationsquelleAutor Edison
Arbeitet auf der Visual Studio 2010. (Ich habe es ausprobiert und es funktioniert!)
Es wird malen Sie Ihre gesamte Zeile.
datagridview
.CellClick
Ereignis und setzen Sie die nächste Zeile von code innerhalb der it.InformationsquelleAutor Levi
Haben Sie nicht erwähnt, wie der Wert geändert wird. Ich habe verwendet eine ähnliche Funktionalität, wenn der Benutzer die Eingabe-Wert. d.h. das betreten und verlassen der edit-Modus.
Mit CellEndEdit - Ereignis des datagridview.
Können Sie hinzufügen von Logik für das clearing Fehler Meldung in ähnlicher Weise.
wenn in Ihrem Fall, wenn die Daten programmgesteuert geladen, dann CellLeave Ereignis kann verwendet werden, mit dem gleichen code.
InformationsquelleAutor Harshal Doshi Jain
Mit diesem code, ändern Sie nur die Zeilen backcolor wo columname Wert ist null, die anderen Zeilen, die Farbe immer noch die Standard-Einstellung.
InformationsquelleAutor bencemik95
Nur ein Hinweis über die Einstellung
DefaultCellStyle.BackColor
...man kann nicht einstellen, dass es alle transparenten Wert, außerColor.Empty
. Das ist der Standardwert. Dass fälschlicherweise impliziert (für mich jedenfalls), die transparent Farben sind OK. Sie sind es nicht. Jede Zeile, die ich setzen, um eine transparente Farbe, nur zieht die Farbe der ausgewählten Zeilen.Verbrachte ich ganz viel Zeit zu schlagen, meinen Kopf gegen die Wand über dieses Thema.
InformationsquelleAutor ulatekh
int counter = gridEstimateSales.Zeilen.Count;
InformationsquelleAutor Amit Patil
Ich hier gelandet auf der Suche nach einer Lösung für den Fall, wo ich nicht mit Daten verbindlich. Nichts für mich gearbeitet, aber ich habe es am Ende mit:
InformationsquelleAutor Gogu CelMare