2017-12-27 20 views
-2

Ich arbeite derzeit an einem Programm, das Daten aus einer Datenbank in C# -Formularen anzeigt und verarbeitet. Ich habe ein DataGridView, das beim Laden des Programms leer ist und später mit Daten aus der Datenbank gefüllt wird, wenn der Benutzer Elemente aus einem ToolStripMenu auswählt. Ich muss in der Lage sein, die Hintergrundfarbe einer Zelle in jeder Reihe, jeder Sekunde zu ändern. Ich habe einen Timer instanziiert und es eingerichtet, um jede Sekunde zu ticken. Ich habe eine Methode Ereignis einzurichten jedes Mal auszuführen, um die Zeitgeberticks (jede Sekunde), unten gezeigt:Ändern der Hintergrundfarbe der DataGrid-Zelle nach Timer Tick C# -Formulare

void _timer_0_Tick(object sender, EventArgs e) 
    { 

    } 

I wäre in diesem Verfahren wie die „Status“ Zelle jeder Zeile in der färben zu können, DataGrid auf Rot oder Grün basierend darauf, ob der Status gut oder schlecht ist. Hier

ist einige Pseudo-Code in der Methode veranschaulicht, was ich tun möchte:

void _timer_0_Tick(object sender, EventArgs e) 
    { 
     bool isDataStable = //code to determine if stable on my end 
     if(isDataStable == true) 
     { 
      DataGrid.Row[Index].Column["Status"].BackColor = Green; 
     } 
     else 
     { 
      DataGrid.Row[Index].Column["Status"].BackColor = Red; 
     } 
    } 

Jede Datagridview-Zeile/Spalte bearbeiten Beispiel, das ich gesehen habe, hat einen Event-Handler auf dem Datagridview-Basis zu verwenden, wie kann Ich implementiere den Timer und bearbeite gleichzeitig das GridView in Echtzeit.

Dank

+0

Wo kommt aus dem Index kommen? Was soll es darstellen? – Plutonix

+1

Mit einem Timer, der eine unbestimmte Anzahl von Zeilen pro Sekunde überprüft, ist ein schlechtes Design. Da sich die Daten erst ändern, nachdem der Benutzer die Zeilenbearbeitung beendet hat, prüfen Sie, ob die Daten gültig sind und färben Sie die Statuszelle. – Gusman

+0

Die 'DataGridView' Klasse hat eine' Rows' Eigenschaft und jeder 'DataGridViewRow' hat eine' Cells' Eigenschaft und jede 'DataGridViewCell' hat eine' Style' Eigenschaft die eine 'BackColor' Eigenschaft hat. – NetMage

Antwort

1

Ihr Pseudo-Code ist in der Nähe - nutzen Sie einfach die richtigen Eigenschaften:

void _timer_0_Tick(object sender, EventArgs e) 
    { 
     bool isDataStable = //code to determine if stable on my end 
     if(isDataStable == true) 
     { 
      DataGrid.Rows[Index].Cells["Status"].Style.BackColor = Color.Green; 
     } 
     else 
     { 
      DataGrid.Rows[Index].Cells["Status"].Style.BackColor = Color.Red; 
     } 
    } 
Verwandte Themen