Ich stoße auf ein seltsames ListView Problem und werde mein Bestes tun, um es zu erklären. Ich habe eine ListView mit 4 Spalten, die letzte ist eine Nachricht Zeichenfolge von unterschiedlicher Länge. Ich habe einige Funktionen, die das ListView-Element rot ändern wird, wenn es bestimmte Schlüsselwörter (Fail, Ausnahme, ect) enthält.
Ich habe dieses Problem zum ersten Mal bemerkt, als ein Element rot war und ich kein Wort in der Spalte sah, das den roten Farbcode auslösen würde. Also habe ich die Länge der eingehenden Zeichenfolge dem Element vorangestellt und ein Textfeld hinzugefügt, das den Text der Spalte anzeigt, wenn er ausgewählt wird. Was ich fand, war, dass die vorangestellte Länge (tatsächliche Länge der eingehenden Zeichenfolge) wäre wie 953, die extrahierte ListViewItem's Text Länge wäre 960 (str Länge + vorangestellte Länge info), aber der Text, der in der Textbox wäre die Länge war 253...
Was ist hier eigentlich los? Seine wie der ganze Text machte es in die ListViewItem, aber es kann/wird nicht zeigen es alle (und nein, seine nicht Spaltenbreite, ich hatte es auf über 1000 im obigen Fall festgelegt).
Hinzufügen des ListViewItems und Überprüfung auf Fehlerstrings:
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;
}
Offensichtlich ist die letzte Unterposition, die mir die Probleme gibt (die eine, die msg.Message erhält)
EDIT: So ein Quatsch, Das erklärt es .... Gibt es eine Möglichkeit, dies zu umgehen?