Probleme beim Löschen von Controls

korsosjosi

Grünschnabel
Hallo!
In einer WindowsForm Player habe ich eine ControlCollection mit einigen Controls. In diesen Controls laufen Videos, werden Bilder gezeigt usw. Es passiert nun während dem Abspielen, dass sich die Controls verändern. Wenn ich mittels Player.Dispose() die WindowsForm ganz eliminiere und diese erneut öffne, bekomme ich zwischen den Anzeigen kurzzeitig eine unerwünschte Lücke. Schöner wäre es also, nur die Controls aus dem Player zu löschen und die neuen Controls zu erzeugen.
Das Erzeugen funktioniert schön, beim Löschen allerdings flackert der Bildschirm dort, wo die Controls gelöscht werden, ein - zwei Sekunden lang. Ich lösche die Controls mittels:

foreach (Control control in Controls)
{
control.Visible = false;
this.Controls.Remove(control);

}

oder

this.Controls.Clear();

Beide Wege führen zum gleichen Ergebnis. Meine Frage nun: Gibt es eine elegantere Lösung, die Controls zu löschen bzw. eine Lösung, in der ein Flackern verhindert wird?

Vielen Dank im Vorhinein
lg
 
Hi

Variante 1 wäre für die Form DoubleBuffering zu aktivieren.
Das zweite was du machen könntest wäre vor dem Löschen SuspendLayout und nach dem Löschen ResumeLayout aufzurufen.
 
Hi!

Danke vielmals! DoubleBuffering hilft.
Für alle, die dieses Problem einmal haben sollten:
in der Windowsform nach InitializeComponent folgende Codezeile einfügen:

this.SetStyle(ControlStyles.AllPaintingInWmPaint |ControlStyles.UserPaint |ControlStyles.DoubleBuffer, true);

lg
 
Zurück