Я столкнулся со странной проблемой ListView и постараюсь объяснить ее.У меня есть ListView с 4 столбцами, последний из которых представляет собой строку сообщения различной длины.У меня есть некоторые функциональные возможности, которые изменят красный элемент ListView, если он содержит определенные ключевые слова (сбой, исключение, т. Д.).
Впервые я заметил эту проблему, когда один элемент был красным, и я не увидел ни одного слова встолбец, который будет вызывать красный код раскраски.Итак, у меня была Длина входящей строки, предшествующая элементу, и я добавил текстовое поле, которое будет отображать текст этого столбца при выборе.Я обнаружил, что предваряющая длина (фактическая длина входящей строки) будет равна 953, длина текста извлеченного ListViewItem будет равна 960 (длина строки + информация о предварительно добавленной длине), но текст, который будет в длине текстового поля, равен 253....
Что здесь происходит?Это похоже на то, как весь текст попал в ListViewItem, но он не может / не будет показывать все это (и нет, это не ширина столбца, в указанном выше случае он был установлен более 1000).
Добавление ListViewItem и проверка на наличие строк ошибок:
ListViewItem listItem = new ListViewItem(msg.Date);
// Add sub-items for Details view.
listItem.SubItems.Add(msg.Time);
listItem.SubItems.Add(msg.Thread);
listItem.SubItems.Add("L: " + msg.Message.Length + " " + msg.Message);
if (!msg.Message.Contains("FA_FAILCNT"))
{
if (msg.Message.Contains("fail", StringComparison.OrdinalIgnoreCase) ||
msg.Message.Contains("exception", StringComparison.OrdinalIgnoreCase) ||
msg.Message.Contains("db q", StringComparison.OrdinalIgnoreCase))
{
listItem.Font = new Font(listItem.Font, FontStyle.Bold);
listItem.ForeColor = Color.Red;
}
else
listItem.ForeColor = Color.Black;
}
Очевидно, это последний подпункт, который дает мне проблемы (тот, который получает msg.Message)
EDIT: Ну дерьмо, это объясняет это .... какие-нибудь способы обойти это?