Flackernde Listview
-
Hallo wenn ich die items meiner Listview update oder die Spalten größe verändere Flackert sie sehr stark. Wie kann ich das unterbinden?
-
nun, da gibts 2 möglichkeiten.
die einfache ist:1:
Vor jeder Bearbeitung der ListView schreibst du:listView1->BeginUpdate();
und wenn die Bearbeitung fertig ist:
listView1->EndUpdate();
2:
Du kannst eine eigene Klasse machen die von einer ListView ableitet.
Im Konstruktor kannst du dann Double Buffering einschalten mit:SetStyle(ControlStyles::DoubleBuffer | ControlStyles::UserPaint | ControlStyles::AllPaintingInWmPaint, true);
Die zweite variante gefällt mir persönlich am besten, aber die erste geht schneller wenn du nur mal eben was gegen das flackern machen willst.
-
danke für die schnelle hilfe=)!
werde beides mal ausprobieren
Edit:
Hmm also das mit beginupdate verändert leider garnichts
wie genau mach ich das mit der classe?
-
du erstelltst über menü: Projekt->Neues Element->Code->Headerdatei eine datei mit dem Namen MeineListView.h und schreibst volgendes hinein:
ref class myListView : System::Windows::Forms::ListView { myListView(void){ SetStyle(ControlStyles::DoubleBuffer | ControlStyles::UserPaint | ControlStyles::AllPaintingInWmPaint, true); } };
und dann halt in deiner (warscheinlich) Form1 bei den Attributen oben schreibst du statt:
System::Windows::Forms::ListView ^listView1;
dann:
myListView ^listView1;
in die header datei "stdafx.h" musst du noch als letzte reihe:
include "MeineListView.h"
dann sollte es klappen.
-
wenn ich jetzt mit
myListView^ listView1 = gcnew myListView;
versuche eine neue ListView zu erschaffen kommt der fehler
Fehler 1 error C3767: "myListView::myListView": Auf mögliche Funktion(en) kann nicht zugegriffen werden.
-
Konstruktor pulic machen
-
top jetzt läufts dank euch leute... wieder was gelernt=)
-
sorry hab ich vergessen
-
Der Thread ist zwar schon etas älter, aber habe gerade das selbe Problem mit der flackernden ListView. Habe auch beide Möglichkeiten probiert, die denjo303 weiter oben beschreibt. Mit BeginUpdate()/EndUpdate() änderte sich bei mir ebenfalls nix. Die zweite Methode mit der eigenen Klasse in der extra Header Datei kompiliert zwar fehlerfrei und das Programm startet auch ohne Fehler, nur leider fehlt dann im Form einfach die komplette ListView.. da ist einfach nur leere Fläche. Und wenn das Programm dann per Start-Button etwas in die ListView schreiben möchte stürzt es ab, da ja keine ListView zu sehen ist. Außerdem geht die grafische Entwurfsansicht von meiner Form1 (Form1.h[Entwurf]) nicht mehr. Es kommt eine Fehlermeldung dass "myListView" nicht bekannt ist. Irgendwie scheint er meine eigens eingebrachte Klasse nicht zu kennen, obwohl der Compiler fehlerfrei übersetzt und das Prog startet... hat jemand ne Idee wie es richtig funktionieren würde?