2017-12-16 2 views
1

Ich denke, das ist ein einfaches Problem, aber das folgende Code-Snippet hat nicht funktioniert. Wenn die Currnet-Reihe grün ist, möchte ich, dass sie heller grün ist, ansonsten möchte ich hellblau. Wenn ich MouseLeave, müssen die Farben zum vorherigen Zustand werden.Wie ändere ich die Hintergrundfarbe der DataGridView Zeile und rückgängig machen bei Hover?

In diesem Code wird es blau, unabhängig von der Farbe. Wenn Sie die Maus bewegen, wird sie weiß. Es scheint im Debug-Modus gut zu funktionieren (Eingabe von if-Anweisung).

private void dtgVeri_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if (e.RowIndex == -1) return; 

     Color colorToChange=Color.LightBlue; 
     Color colorCurrent = dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor; 

     if (colorCurrent == Color.LightGreen) 
      colorToChange = Color.PaleGreen; 

     dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor = colorToChange; 
    } 

    private void dtgVeri_CellMouseLeave(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex == -1) return; 

     Color colorToChange = Color.White; 
     Color colorCurrent = dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor; 

     if (colorCurrent == Color.PaleGreen) 
      colorToChange = Color.LightGreen; 

     dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor = colorToChange; 
    } 
+1

Haben Sie versucht .Style statt .DefaultCellStyle? Es scheint, dass der .DefaultCellStyle eine Kaskadeneigenschaft hat, so dass sich möglicherweise die gesamte Tabelle ändert. –

+1

@ S.Cassidy gibt es keine **. Style ** und glaube nicht, ich benutze in einem anderen Code gab es kein Problem. –

+0

Mein Fehler, der nur für Cell-Objekte gilt, nicht für Zeile. Wie auch immer, froh, dass es funktioniert hat. –

Antwort

0

gelöstes Problem CellMouseEnter Ereignis statt CellMouseMove verwenden. Denn CellMouseMove prüft und erstellt ständig Probleme, aber wir wollen die Kontrolle nur einmal bei "Enter" und "Leave" halten.

+0

Ich versuche, die Situation zu reproduzieren. Könnten Sie schreiben, welche Farbe Sie für den Zeilen- (oder Zellen-) und Zeilenauswahlhintergrund verwendet haben? –

+0

Ihre Lösung löst das Problem nicht –

Verwandte Themen