Я создаю форму журнала и отображаю информацию в DGV.
Каждый журнал представлен в виде класса LogEntry.
Первоначально я создал и добавил данные в DGV следующим образом:
Создание каждого столбца DGV следующим образом:
DataGridViewTextBoxColumn dateTimeColumn = new DataGridViewTextBoxColumn();
dateTimeColumn.Name = "dateTime";
dateTimeColumn.HeaderText = "Date/Time";
dataGridView_Log.Columns.Add(dateTimeColumn);
Добавление записи logEntry:
dataGridView_Log.Rows.Add(logEntry.dateTime, logEntry.service, logEntry.command, logEntry.message);
dataGridView_Log.Rows[dataGridView_Log.Rows.Count - 1].DefaultCellStyle.ForeColor = logEntry.color;
Все это прекрасно работает, и каждая строка окрашена в правильный цвет, но, будучи журналом, она содержит много записей, поэтому я хотел бы иметь возможность фильтровать ее по своему желанию.
После осмотра кажется, что я не могу фильтровать, используя метод, который у меня был (может быть, я просто не нашел правильный пример?), Поэтому я вернулся к этому методу:
Добавление столбцов:
//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;
Добавление строк:
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;
Однако здесь есть проблема, если DGV не имеет фокуса, цвет не применяется ни к одной из строк, и они являются просто черным текстом. Но как только DGV получает фокус, все последующие добавленные строки окрашиваются.
Еще одна заметка отфильтрована, я хочу, чтобы цвет по-прежнему применялся к правильным строкам.
Все, что я хочу, это блестящие цвета:)
Спасибо за ваше время и помощь.