Ich erstelle ein Protokollformular und zeige die Informationen in einem DGV an. Jedes Protokoll wird in Form einer LogEntry-Klasse bereitgestellt.Farbe wird nicht auf die Datagridview-Zeile angewendet, es sei denn, sie hat den Fokus.
ursprünglich erstellt I und addierten Daten an die DGV etwa so:
jedes coloumn des DGV Erstellen wie so:
DataGridViewTextBoxColumn dateTimeColumn = new DataGridViewTextBoxColumn();
dateTimeColumn.Name = "dateTime";
dateTimeColumn.HeaderText = "Date/Time";
dataGridView_Log.Columns.Add(dateTimeColumn);
einen logEntry Datensatz hinzufügen:
dataGridView_Log.Rows.Add(logEntry.dateTime, logEntry.service, logEntry.command, logEntry.message);
dataGridView_Log.Rows[dataGridView_Log.Rows.Count - 1].DefaultCellStyle.ForeColor = logEntry.color;
Das alles funktioniert gut und jede Zeile hat die richtige Farbe, aber da es ein Protokoll ist, enthält es viele Einträge, so dass ich es nach Belieben filtern könnte.
Nach drum herum suchen scheint ich kippe Filter unter Verwendung des Verfahrens hatte ich so kehrte ich auf diese Methode zurück (vielleicht in der Lage sein, ich das richtige Beispiel gerade gefunden haben?):
Hinzufügen von Spalten:
//Create a new DataTable
dt = new DataTable("Logs");
//Add columns to datatable
dt.Columns.Add("dateTime", typeof(string));
dt.Columns.Add("Service", typeof(string));
dt.Columns.Add("Command", typeof(string));
dt.Columns.Add("Message", typeof(string));
//Set the dataGridView's dataSoure to the filled dataTable
dataGridView_Log.DataSource = dt;
Zeilen hinzufügen:
row = dt.NewRow();
row["dateTime"] = logEntry.dateTime;
row["Service"] = logEntry.service;
row["Command"] = logEntry.command;
row["Message"] = logEntry.message;
dt.Rows.Add(row);
dataGridView_Log.Rows[dataGridView_Log.Rows.Count - 1].DefaultCellStyle.ForeColor = logEntry.color;
aber hier ist das Problem, wenn die DGV tut die Farbe konzentrieren isnt auf eine der Zeilen angelegt und sie sind nur schwarzer Text. Aber sobald der DGV den Fokus erhält, werden alle folgenden Zeilen gefärbt.
Ein anderer Hinweis ist einmal gefiltert, ich möchte die Farbe noch auf die richtigen Zeilen angewendet werden.
Alles, was ich will, ist glänzende Farben :)
Vielen Dank für Ihre Zeit und Hilfe.
Leider wenn ich sage, Fokussierung Ich meinte, dass der DGV "gesehen" werden kann. Der DGV befindet sich in einem separaten Formular, das zuerst instanziiert wird, wenn ein Benutzer auf eine Schaltfläche klickt, die angezeigt wird. Die Formulare, die sich schließen, werden sogar überschrieben und es wird statt geschlossen geschlossen. Erst wenn das Formular zuerst form.show() ist, werden die Farben angewendet. – Metalstorm