Laden...

DataGridView jeder 2. Zeile in anderer Farbe

Erstellt von Bad_Hoschi vor 17 Jahren Letzter Beitrag vor 17 Jahren 8.261 Views
B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren
DataGridView jeder 2. Zeile in anderer Farbe

Hey.

Ich habe ein DataGridView und will dort jede zweite Zeile in blau oder so anzeigen. Im moment gehe ich das Grid noch mit eine Schleife durch und setze mit


            for(int i = 1; i < dataGridView.Rows.Count; i += 2)
            {
                dataGridView.Rows[i].DefaultCellStyle.BackColor = Color.LightBlue;
            }

die Farbe.

Mein Problem ist jetzt das die Farbe weg ist wenn ich das Grid sortiere (also auf den ColumnHeader klicke).

Gibt es vielleicht eine andere Möglichkeit oder ein Property was man einfach setzen kann damit das Grid so aussieht? (Hab schon ein bisschen gesucht aber konnte nichts finden)

Wär super wenn mir jemand helfen könnte.

Mfg

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Bad_Hoschi,

DataGrid.AlternatingBackColor

herbivore

B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren

Danke für die schnelle Antwort.

Ich habe aber jetzt noch eine Frage. Und zwar wollte ich die breite des Grids ermitteln und die letzte Spalte so breit machen das es bis zum rand des Grids geht. Eigentlich dachte ich das es ganz einfach mit dataGridView.Size.Width - Spaltenbreiten geht, aber in der Size vom Grid ist die breite der rechten Scrollbar mit drin deshalb müsste ich diese ja noch abziehen wenn die Scrollbar angezeigt wird. Kann ich irgendwie rausbekommen ob die Scrollbar angezeigt wird oder gibt es ein Property mit der Gesamtbreite ohne Scrollbar?

Mfg

I
39 Beiträge seit 2006
vor 17 Jahren

Moin

Vielleicht könnte dir ja das helfen:


dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

dann füllt er automatisch den gesammten gridView aus

B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren

Hallo.

An sich geht das schon so nur das er so alle Spalten anpasst damit nicht mehr nach links und rechts gescrollt werden muss, aber ich wollte nur die letzte Spalte vergrößern. Wenn das Grid nämlich keiner ist als die angezeigten Daten soll man schon nach recht und links scrollen können und die Daten sollen auch noch vernünftig angezeigt werden. Oder kann man irgendwo eine Mindestbreite setzen?

Gibt es vielleicht noch eine andere Möglichkeit. Zur Not mach ich es halt so aber anders wär schöner 😉

mfg

187 Beiträge seit 2005
vor 17 Jahren
int iColWidth = dataGridView1.Width;
for(int i = 0; i <= dataGridView1.Columns.Count; i++)
{
iColWidth -= dataGridView1.Columns[i].Width;
}

if (iColWidth > 0)
dataGridView1.Columns[dataGridView1.Columns.Count - 1].Width = iColWidth;

Das ist ungetestet und du musst gucken, ob du mehr zeilen hast als angezeigt, denn die vertikale scrollbar zieht auch noch etwas breite weg.

B
Bad_Hoschi Themenstarter:in
55 Beiträge seit 2006
vor 17 Jahren

Hey. Danke für die Antwort aber

du musst gucken, ob du mehr zeilen hast als angezeigt, denn die vertikale scrollbar zieht auch noch etwas breite weg

genau das ist mein Problem. 🙂

Wie bekomm ich raus ob mehr Zeilen angezeigt werden? Muss ich jede Zeile durchgehen und die Höhen addieren und gegen die Höhe des Grids prüfen?
Würde ich so ein wenig unschön finden ...

mfg

187 Beiträge seit 2005
vor 17 Jahren

sieht doch niemand außer dir, dass du so herausfindest, ob die scrollbar sichtbar ist oder nicht

X
2.051 Beiträge seit 2004
vor 17 Jahren

ach Leute! warum guckt den Keiner in die Hilfe rein?!

bei DataGridViewColumn-Klasse gibt es Eigenschaften, die das gewünschte Verhalten herbeizaubern. Thja...wer hätte das gedacht?! 😉

...und ja, man kann auch die Mindestbreite einstellen.

187 Beiträge seit 2005
vor 17 Jahren

Dann lass uns von deinem fundus der weisheit kosten. aber vermutlich wirst du es extra für dich behalten

X
2.051 Beiträge seit 2004
vor 17 Jahren

Hinweis auf die Hilfe und DataGridViewColumn reicht etwa nicht?

187 Beiträge seit 2005
vor 17 Jahren

Nein, aber schön, dass du das spiel mitspielst