Paint Event eines Controls während Größenänderung der Form (_resize) aussetzen und erst bei (_resizeend) ausführen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von dive26.

    Paint Event eines Controls während Größenänderung der Form (_resize) aussetzen und erst bei (_resizeend) ausführen

    Hallo Leute,

    ich steh irgendwie auf der Leitung. Vielleicht habt Ihr einen Tipp wie ich das am besten machen kann.

    Ich zeichne im Paint-Event auf einem Panel verschiedene Dinge.
    Die ganze Form und somit auch das Panel können jederzeit in der Größe verändert werden.

    Ich möchte nun, dass während der Größenänderung der Form das Paint-Event des Panels nicht aufgerufen wird (also bei Me.Resize).
    Um "Grafikfragmente" zu vermeiden und bei schwächeren Rechnern nicht zu "ruckeln".
    Erst wenn Me.ResizeEnd aufgerufen wird, soll das Paint-Event des Panels aufgerufen werden.

    Oder (vielleich noch besser), kann man das automatische Paint-Event des Panels unterdrücken und dies bei Bedarf einfach manuell aufrufen?

    2. Frage:
    Welches Event wird eigentlich beim Maximieren aufgerufen? Nur das Me.Resize ?

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Hat sich erledigt.
    Ich habe einfach im Resize-Event die Panel-Größe nicht verändert, sondern erst im ResizeEnd Event.
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Hallo @dive26,
    auch, wenn sich das schon erledigt hat, vielleicht hilft dir so etwas in der Zukunft:
    Man kann ein eigenes Control erstellen, indem man zum Beispiel von PictureBox erbt und etwas verändert.

    VB.NET-Quellcode

    1. Public NotInheritable Class PictureBoxEx : Inherits PictureBox
    2. Public Sub New()
    3. SetStyle(ControlStyles.Selectable Or ControlStyles.UserMouse, True) ' Wichtig, damit die PictureBox nicht selbstständig Events wirft!
    4. End Sub
    5. End Class

    Lass kompilieren, gehe in den Designer und entnehme aus der Toolbox dein neues Tool und platziere es. Dieses SetStyle(...) sorgt bei mir zum Beispiel dafür, dass die PictureBox nicht wegen jeder k*ck Kleinigkeit ein Event wirft und ins Paint-Event geht.
    ouh, cool - du schreibst noch Resizing-Code!
    Dann ist Docking, Anchoring bei dir noch garnet angekommen?


    Ja exakt. Ich habe mir diese Docking-Geschichte zwar angesehen, komme aber damit nicht auf die von mir gewünschten Ergebnisse. Es ist auch nicht dass Allerweltsmittel. Vieles verschiebt sich oft so ineinander, dass es optisch zum erbrechen ist ;-).
    Daher mache ich alles manuell über das Resize-Event.
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at