ListViewItem wird nicht fett angezeigt

tecla

Erfahrenes Mitglied
Hallo alle miteinander

Vielleicht kann mir jemand helfen, diesen merkwürdigen Effekt loszuwerden:

Ich habe eine ListView mit CheckBoxen. Checked man ein Item an, soll dieses fett dargestellt werden. Das klappt wunderbar. Nun zum merkwürdigen Teil:

Wird das Form geladen, werden Daten in die Eingabefelder gefüllt, auch die Items in die ListView. Ein Teil davon ist checked und dementsprechend fett.
Ist die Anzahl Items grösser als die ListView lang (also sobald Scrollbars erscheinen), werden die Items jedoch nicht mehr fett dargestellt. Scroll ich runter und wieder rauf, sind sie plötzlich fett.
Frag ich ab, ob die Items fett sind oder nicht, behauptet mein Rechner sie seien fett. Schalte ich eine MessageBox dazwischen, die ausgibt ob sie fett sind oder nicht, werden alle plötzlich fett.
Diesen Effekt gibt es nur auf einem Rechner. Ich habe das Programm auf mehreren Rechnern getestet, überall läufts, nur auf dem einen nicht obwohl das gleiche Betriebssystem und das gleiche .net framework installiert sind.

Der Problem-Rechner hat ein Windows Vista mit .net farmework 3.5....

Für jedwelche Ideen bin ich sehr dankbar!

Grüsse, Tecla
 
Seltsam.
Probier mal mit
Code:
ListView.Invalidate()
oder
Code:
ListView.Refresh()
das Control neu zu Zeichnen, nachdem die Daten geladen wurden.
Vielleicht hilft das.
 
Hallo Shakie

Nützt leider nix...

Das einzige, das nützt, ist folgender Code zum Schluss der Daten-Einfüll-Funktion:

Code:
foreach (object checkedItem in listViewGruppen.CheckedItems)
 {
      ListViewItem item = (ListViewItem)checkedItem;
      if (item.Font.Bold == true)
           MessageBox.Show("fett");
      item.Font = new Font(item.Font, FontStyle.Bold);
 }

Die Zeile item.Font.Bold wird brav immer true, dh. die MessageBox kommt für jedes Item.
Sobald die Schlaufe das erste Item nochmals auf Bold setzt, werden alle fett angezeigt.
Ohne MessageBox funktionierts nicht. Es muss also schon irgendetwas mit dem Zeichnen oder dem Focus zu tun haben. Oder?

Vielleicht muss ich noch erwähnen, dass das Problem nur existiert, wenn das Form aus einem anderen Fom aufgerufen wird und sofort die Daten eingefüllt werden.

Wenn die Daten-Einfüll-Funktion erst im Problem-Form mittels Button aufgerufen wird, klappts ebenfalls einwandfrei...
 
Wenn du sagst, dass das Problem nur auf manchen PCs auftritt, dann klingt das für mich nach einem Bug im ListView.
Probier mal
Code:
System.Windows.Forms.Application.DoEvents()
irgendwo einzubauen. Vielleicht hilft ja das. :confused:
 
Salut Shakie

Das nützt leider auch nichts :(

Ich hab noch ausprobiert, das Form mit ShowDialog() statt mit Show() aufzurufen, da ich dachte, dass bei Show() vielleicht der Focus (oder was auch immer) auf das aufrufende Form zurückgeht (da ich dort noch einen Delegate abonniere der Änderungen aus dem Problem-Form ins aufrufende Form einträgt). Ist aber nicht so, bzw. hilft kein bisschen...
 
Zurück