Guten Abend,
Ich habe ein Listview mit 6 Einträgen - jeweils 3 davon in einer Gruppe (insgesamt also 2 Gruppen).
Der sinn des ListView ist es einen Status von 6 Funktionen anzuzeigen (OK/FALSE).
Ich habe vor das Update einmal in der Sekunde zu machen.
Dies sieht nach diesem schema aus:
beginupdate();
clear();
add(...);
endupdate();
Das Problem ist in der Überschrift erklärt.
Es flackert bei jedem Update, was echt unschön aussieht.
Ich habe gelesen das man da auch was mit dem Vitualmode machen kann - verstanden hab ich das ganze aber noch nicht (also wie ich die Items im Virtualmode hinzufügen kann).
Hat jemand hierfür ein kleines Beispiel?
Mein Blog: http://www.frickelblog.de
Hallo,
das wird funktionieren, wenn du DoubleBuffering oder/und BeginUpdate - EndUpdate verwendest.
Guckst du hier: http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx
Dieses Thema wurde bereits hier behandelt: Listview Flackert, egal was ich mache
Gruss
Michael
Hallo Sclot,
SuspendLayout
DoubleBuffered
Außerdem könntest du versuchen, nur den Inhalt der ListView-Items zu ändern, statt sie zu löschen und neu einzufügen.
VirtualMode ist für große Datenmengen
herbivore
OK...
Mit Buffern klappt es wirklich 🙂
Muss aber in einer Abgeleiteten ListView stehen - und da im Konstruktor auch nur das OptimizedDoubleBuffer.
namespace daemon.Controls
{
public partial class BufferedListview : ListView
{
public BufferedListview()
{
InitializeComponent();
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
}
}
}
^^ damit funktioniert es dann 🙂
Danke euch.
Mein Blog: http://www.frickelblog.de
oder die protected bool property Doublebuffered auf true setzen.
Der frühe Apfel fängt den Wurm.
Wie herbivore schon geschrieben hat, würde ich es über ein Item-Update lösen.
Es ist nicht gerade optimal, das einfach mit DoubleBuffered totzuschlagen. Man sollte möglichst ressourcenschonend arbeiten und da bietet sich das eben an.
> Codejunky <