Style-Flag von Controls

proprogger

Mitglied
Ich habe eine Frage zum Style-Flag von Controls.
Da kann man ein Bit setzen für DoubleBuffering.
Das geht beim Formular z.b. so: Me.SetStyle(DoubleBuffering)

Das DoubleBuffering ist doch dazu da dass Zeichenoperationen erst nach Beendingung der Funktion / Sub / Event auf dem Bildschirm aktualisiert werden.
Ich möchte das mit einem Panel machen, dessen Paint-Event viele Zeichenoperationen beinhaltet.
Bei mousemove wird alles neugezeichnet und wenn ich mit der Maus drüberfahre flackert das Ganze, weil die Zeichenoperationen gleich auf dem Bildschirm aktualisiert werden.

Jetzt hab ich das mit dem Style-Flag gelesen und wollte DoubleBuffering für das Panel aktivieren.
Aber man kann es nur mit "Me" machen (also die Form), weder mit Form selbst (z.B. Form1) noch mit nem Panel oder sonst was, da SetStyle protected ist.

Hab es mal mit Me probiert und die Zeichenoperationen auf Me gesetzt statt auf Panel und dann hat er alles was vorher im Panel gezeichnet wurde logischerweise ins Form gemalt. Und das ohne zu flackern beim "mit-der-Maus-drüberfahren" und so.

Kennst sich da jemand aus mit dem protected?
Dass ich dann SetStyle auf das Panel anwenden kann.
Oder eine Alternativ-Lösung zu dem Problem.

Falls es wichtig ist: Ich progge in VB.NET.

Danke im Vorraus,
MfG,
proprogger
 
Du musst vom Panel ableiten und im Konstruktor der abgeleiteten Klasse kannst du dann das DoubleBuffering setzen.

Beispiel:
Code:
public class PanelEx : System.Windows.Forms.Panel {

  public PanelEx() {
      // Hier DoubleBuffering aktiveren
  }

}
Ausserdem hast du DoubleBuffering falsch verstanden:
Bei aktiviertem DoubleBuffering werden die Änderungen in einer quasi zweiten Bildschirmoberfläche gezeichnet. Wurde alle Änderungen fertig übernommen, wird die tatsächliche Bildschirmoberfläche ausgeblendet und der bereits fertige Bereich eingeblendet.

Zum Thema protected:
Wie wärs mit einfach ins Codefenster schreiben, Cursor darauf setzen und F1 drücken?
 
Ja das mit dem DoubleBuffering hab ich schon richtig verstanden, aber im Prinzip ist für den Benutzer nur der Unterschied zu sehen, dass es auf dem Bildschirm erst nach Beenden der Zeichenfunktionen sichtbar wird. Ich weiß schon was DoubleBuffering genau ist ;-)

Aber Danke für die Antwort, hab das Problem jetzt gelöst! Hab das Panel überschrieben und im Constructor die SetStyle()-Methode aufgerufen, um DB zu aktivieren.

MfG,
proprogger
 

Neue Beiträge

Zurück