Autor Beitrag
Chiyoko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: So 27.03.11 14:03 
Huhu,

ich suche eine Moeglichkeit, bestimmte Strings in verschiedeen
Farben darzustellen.

Mein bisheriger Versuch:

ausblenden 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:"))
      {
         // funktioniert
         //MessageBox.Show(string.Format("Spalte: {0} und Zeile: {1}", j+1, i+1));
                                        
         // funktioniert nicht
         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 user profile iconChristian S.: Code- durch C#-Tags ersetzt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden 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):
ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: 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^^