2009-06-29 14 views
0

Dies ist ein seltsames Problem, ich habe nicht viel Code hinzugefügt, da ich nicht weiß, zu starten waren. Ich habe eine Listview-Steuerelement im virtuellen Modus, wenn ich die Listview filtern, um mir alle Menschen namens John zu zeigen, sehe ich dann 3 Benutzer namens John, ich annulliere dann den Filter alle Werte auf Null setzen und alle Daten an die Listview zurück, ich jetzt habe mehrere hundert Einträge in der Liste, aber ich kann nur 30 auf dem Bildschirm sehen, wenn ich nicht in der Listenansicht nach unten scrolle.ListView kann ein Kontrollkästchen nicht aktivieren

Ich benutze dann den Code unten, um ein Kontrollkästchen in jeder Zeile zu überprüfen, werden alle abgesehen von den 3 Johns überprüft, aber wenn ich 1 der 3 Johns in listview ohne Scrollen und dann den Code unter dem sichtbaren John ist überprüft.

for (int i = 0; i < this._items.Count; i++) 
      { 

        this._items[i].Checked = true; 
      } 

Ich habe den Status des Kontrollkästchen aktiviert, kurz bevor sie in dem obigen Code überprüft und wenn John sichtbar ist dann das Kontrollkästchen glaubt es deaktiviert (false) ist, wenn es nicht sichtbar ist es belives geprüft wird, (wahr). Wenn man also einen sichtbaren John auf dem Bildschirm sieht, sieht das Kontrollkästchen nicht aus und ein Test beweist, dass es nicht aktiviert ist. Für die beiden Johns kann ich nicht sehen, dass sie überprüft werden, aber wenn ich nach unten scrolle, kann ich sie sehen.

Irgendwelche Ideen?

+0

Bei welchen Gelegenheiten beurteilen Sie die this._items Sammlung füllen? –

Antwort

1

Out-of-the-Box, .NET-ListViews (WinForms) im virtuellen Modus unterstützen keine Kontrollkästchen. Sie arbeiten unzuverlässig und verursachen seltsame Fehler. Ich habe den, den du beschreibst, nie gesehen, aber es überrascht mich nicht.

Ihre Lösung ist entweder:

  1. eine nicht-virtuellen Listview verwenden
  2. eine ObjectListView verwenden, die auf virtuellen Listen Unterstützung Kontrollkästchen hat
0

ich genau das gleiche Problem haben und ich bin nicht im virtuellen Modus. Ich habe das Programm im Debug-Modus ausgeführt und obwohl die Anweisung:

listView1.Items [count] .Checked = true;

wird ausgeführt ('count' ist ein funktioneller Zähler), die Kontrollkästchen in meiner Listenansicht werden nicht geprüft. Manchmal werden ein oder zwei von ihnen ohne ersichtlichen Grund, obwohl die Zeile für alle Kontrollkästchen gelesen wird, die überprüft werden sollen ...

Ich wäre sehr interessiert an jedem Highlight!

Danke, christophe

Verwandte Themen