Entwickler-Ecke
WinForms - Listview item.subitems text highlight
Chiyoko - So 27.03.11 14:03
Titel: Listview item.subitems text highlight
Huhu,
ich suche eine Moeglichkeit, bestimmte Strings in verschiedeen
Farben darzustellen.
Mein bisheriger Versuch:
Code schnipsel
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| for (int i = 0; i < AUMlistView.Items.Count; i++) { for (int j = 0; j < AUMlistView.Items[i].SubItems.Count; j++) { if (AUMlistView.Items[i].SubItems[j].Text.Contains("Code:")) { AUMlistView.Items[1].SubItems[1].BackColor = Color.Blue; AUMlistView.Items[i].SubItems[j].Text.... = Color.Blue; } } } |
Ein Anhaltspunkt waere nett, danke.
EDIT: Es werden mehr als 100 x 4 Subitems, darum die Schleifen.
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Th69 - So 27.03.11 17:35
Hi,
um die Farben individuell setzen zu können, mußt du jeweils pro ListViewItem die UseItemStyleForSubItems-Eigenschaft auf 'false' setzen:
C#-Quelltext
1:
| listViewItem.UseItemStyleForSubItems = false; |
P.S. Anstatt jedesmal die Indexer pro Schleifendurchgang mehrfach zu benutzen, merke dir das aktuelle ListViewItem bzw. SubItem in einer eigenen Variablen (gerade bei vielen Schleifendurchgängen ist das etwas performanter):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| for (int i = 0; i < AUMlistView.Items.Count; i++) { ListViewItem listViewItem = AUMlistView.Items[i]; listViewItem.UseItemStyleForSubItems = false;
for (int j = 0; j < listViewItem.SubItems.Count; j++) { ListViewItem.ListViewSubItem subitem = listViewItem.SubItems[j];
subItem.BackColor = Color.Blue; subItem.Text = "..."; } |
Bzw. noch einfach geht es mittels einer foreach-Schleife:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| foreach(ListViewItem listViewItem in AUMlistView.Items) { listViewItem.UseItemStyleForSubItems = false;
foreach(ListViewItem.ListViewSubItem subitem in listViewItem.SubItems) { subItem.BackColor = Color.Blue; subItem.Text = "..."; } |
Chiyoko - So 27.03.11 17:55
Das mit dem Style viel mir spaeter auch auf, damit schaffte ich es dann,
jeweils ganze Bloecke(Cell) zu highlighten.
Zitat: |
P.S. Anstatt jedesmal die Indexer pro Schleifendurchgang mehrfach zu benutzen, merke dir das aktuelle ListViewItem bzw. SubItem in einer eigenen Variablen (gerade bei vielen Schleifendurchgängen ist das etwas performanter):
|
Kannst du das bitte genauer Erklaeren?
Stoppt die Schleife nicht, wenn der Durchlauf stattgefunden hat?
...inwiefern performanter?
Foreach vergess ich immer ganz gerne, obwohl die Schleife ungemein praktisch ist:D
Herzliches Dankeschoen fuer diese ausfuehrliche Beschreibung.
EDIT:
Ok, jetzt steig ich durch dein "PS" durch.Danke^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!