VB.Net DoubleBufferPanel zur Ladezeitoptimierung

Jeder kennt das Problem bei Panels, dass die Elemente darauf sich eher träge beim Laden verhalten. Oder wenn man auf dem Panel selber grafische Optionen durchführt es stark anfängt zu flackern. Vor allem tritt das auf, wenn man Panels als Tabs nutzt und damit also z.B. Panel1 ausblendet aber dafür Panel2 einblendet.

VB.NET DoubleBufferPanel Tutorial

DoubleBufferPanel aktivieren

Schade daran ist das grundsätzlich bei über 5 Elementen leichte Ladezeitlags auftreten. Will man dies verhindern brauch man also Methoden, welche schon Inhalte vorpuffern können.

Genau dies realisieren wir jetzt mit dem DoubleBufferPanel:

Public Class DoubleBufferPanel
    Inherits Panel
    Public Sub New()
        MyBase.New()
        Me.DoubleBuffered = True
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
        UpdateStyles()
    End Sub
End Class

WICHTIG! Fügt diesen Code als Klasse ein und nicht als Komponentenklasse.

 

Nachdem die Klasse erstellt ist und der Code eingefügt wurde, speichert ihr die Klasse ab und klickt auf Erstellen und danach auf Projekt neu erstellen. Dies integriert eure Komponente in die Toolbox. Nun könnt ihr das neue Panel ganz einfach verwenden oder eure normales Panel dadurch ersetzen.

Auswirkungen

Nun sollten auch bei vielen Elementen eine Optimierung der Anzeige von über 50% erfolgen. Aber natürlich kann man nicht gänzlich ein Nachladen verhindern. Jedoch ist es mit diesem Panel schon wesentlich angenehmer und akzeptabel.

 

PS: Änderungen am Form Designer können zu fehlern im Code führen. An dieser Stelle einfach den Form-Namen entfernen. Also aus Form1.DoubleBufferPanel wird DoubleBufferPanel. Nun kann das Form nach Speichern wieder korrekt angezeigt werden. Ich denke nicht, dass dieses Verhalten normal ist. Eine Lösung wäre dem Stammnamespace zu leeren.

Fazit

Hier wurde eine eigene Komponente für die Toolbox erstellt, mit welcher sich nicht-flackerende Panels erstellen lassen.

Kommentar schreiben

Kommentare: 0