none
Windows-Form anzeigen ohne optische Störungen RRS feed

  • Frage

  • Hallo Zusammen,

    mit dem Windows-Former habe ich ein TabControl mit einigen TabPages
    gebaut, jedes TabPage besitzt eine Menge Container und diese wiederum
    unzählige Controls jeglicher Art.

    MyBase beginnt mit einem drübergelegten hübschen Panel.Visible = True,
    während das TabControl.Visible = False ist. Zum Start entferne ich das
    Me.Controls.Remove(Panel) und schalte das TabControl.Visible = True

    Das sieht optisch grausam aus, ein großes Tohuwabohu auf dem Schirm,
    bis sich das voll ausgebildete TabControl mit all seinem "Zeugs" zeigt.

    Irgendwo habe ich mal was über "Application.DoEvents" gelesen und damit
    rumprobiert, das Chaos auf dem Schirm aber nicht beseitigen können.

    Wer weiß einen Rat bzw. eine Alternative?

    Schönen Sonntag!

    Rudi


    Sonntag, 28. Februar 2010 09:06

Antworten

  • Hallo Rudi,

    Aufrufe von DoEvents helfen bei langsamen Bildschirmaufbau
    nur dann, wenn sich das Programm mit sich selbst beschäftigt
    und so die Windows Meldungsschleife nicht mehr bedient wird.

    BeginUpdate/EndUpdate sind beim Füllen vieler Daten für
    ListView/TreeView et al. hilfreich, wenn sich diese Steuerelemente
    sich langsam aufbauen.

    Das bereits von Mathias angesprochene SuspendLayout/ResumeLayout
    empfiehlt sich immer dann, wenn umfangreiche Änderungen am Layout
    (Hinzufügen oder Entfernen von Steuerelementen) stattfinden.

    Das Aktivieren von DoubleBuffer hilft nur in einigen (insbes. grafiklastigen) Fällen.

    Wunder vollbringen können aber alle nicht.

    Und ohne näheres über Deinen Formular-Aufbau zu wissen,
    kann man keine seriösen Tipps geben.

    Gruß Elmar
    Montag, 8. März 2010 20:23
    Beantworter
  • Hallo Robert,

     

    ich habe mir einen "Sleeper" gebaut,

       Public Sub SLEEP(ByRef votePAUSE As Single)
          Dim proSTART As Double, proENDE As Double
          Application.DoEvents()
          proSTART = VB.DateAndTime.Timer
          proENDE = proSTART + votePAUSE
          Do While VB.DateAndTime.Timer < proENDE
          Loop
       End Sub

    den setzte ich mit 'ner haben Sekunde vor das

    Statement "hüschesPANEL.Visible = False", die

    obtische Wirkung war auf jeden Fall besser, warum

    leuchtet mir auch nicht ganz ein, ich "frimle" halt gern!

     

    Viele Grüße!

    Rudi

    Donnerstag, 25. März 2010 08:22
  • Hallo Rudi,

    Danke dass Du die Lösung gepostet hast.

    Du kannst als Antwort markieren den Beitrag der Dich zu einer Erfolgreichen Lösung geführt hat und Du kannst als hilfreich markieren die Beiträge die Dir geholfen haben dich an die Lösung zu nähern oder die Beiträge von denen Du etwas Neues gelernt hast und die auch für andere hilfreich könnten sein.

    Grüße,

    Robert

    • Als Antwort markiert Rudi Remmiz Montag, 13. August 2018 10:30
    Donnerstag, 25. März 2010 08:30
    Moderator

Alle Antworten

  • Hi Rudi,

    kannst Du irgendwo Beispielcode hoch laden, damit ich das Problem besser nachvollziehen kann? Von der Beschreibung ist mir noch nicht 100%ig klar, was genau passiert und warum.

    Evtl. hilft SupspendLayout / ResumeLayout, http://msdn.microsoft.com/de-de/library/system.windows.forms.control.suspendlayout.aspx

    Grüße,
    Mathias
    Sonntag, 28. Februar 2010 11:04
  • Hallo Rudi,

    Hat Dir die Antwort geholfen?

    Grüße,
    Robert

    Donnerstag, 4. März 2010 16:42
    Moderator
  • Hallo Rudi,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Sonntag, 7. März 2010 10:00
    Moderator
  • Hallo Robert,

    leider bin ich nicht weiter gekommen, mir würden ein paar
    Hinweise bzw. sinnvolles Einsetzen von Application.DoEvents,
    oder auch von ListView1.BeginUpadte bzw. ListView1.Endupdate
    weiterhelfen, ich sehe da keine befriedigenden Lösungen.

    Gruß!
    Rudi
    Montag, 8. März 2010 18:05
  • Hallo Rudi,

    Aufrufe von DoEvents helfen bei langsamen Bildschirmaufbau
    nur dann, wenn sich das Programm mit sich selbst beschäftigt
    und so die Windows Meldungsschleife nicht mehr bedient wird.

    BeginUpdate/EndUpdate sind beim Füllen vieler Daten für
    ListView/TreeView et al. hilfreich, wenn sich diese Steuerelemente
    sich langsam aufbauen.

    Das bereits von Mathias angesprochene SuspendLayout/ResumeLayout
    empfiehlt sich immer dann, wenn umfangreiche Änderungen am Layout
    (Hinzufügen oder Entfernen von Steuerelementen) stattfinden.

    Das Aktivieren von DoubleBuffer hilft nur in einigen (insbes. grafiklastigen) Fällen.

    Wunder vollbringen können aber alle nicht.

    Und ohne näheres über Deinen Formular-Aufbau zu wissen,
    kann man keine seriösen Tipps geben.

    Gruß Elmar
    Montag, 8. März 2010 20:23
    Beantworter
  • Hallo Rudi,

    Hat Dir die Antwort geholfen?

    Grüße,
    Robert

    Donnerstag, 18. März 2010 13:51
    Moderator
  • Hallo Rudi,

    hasst Du eigentlich Dein Problem gelöst ?

    Grüße,
    Robert

    Mittwoch, 24. März 2010 08:52
    Moderator
  • Hallo Robert, habe das Problem gelöst, Danke und viele Grüße!
    Donnerstag, 25. März 2010 05:50
  • Hallo Rudi,

    Es freut uns dass Du Dein Problem lösen könntest und wenn Du Zeit hasst es wäre schön, wenn Du posten würdest wie es funktioniert hat, denn dann profitieren unter Umständen andere mit dem gleichen Problem davon.

    Danke und Grüße,

    Robert

    Donnerstag, 25. März 2010 07:53
    Moderator
  • Hallo Robert,

     

    ich habe mir einen "Sleeper" gebaut,

       Public Sub SLEEP(ByRef votePAUSE As Single)
          Dim proSTART As Double, proENDE As Double
          Application.DoEvents()
          proSTART = VB.DateAndTime.Timer
          proENDE = proSTART + votePAUSE
          Do While VB.DateAndTime.Timer < proENDE
          Loop
       End Sub

    den setzte ich mit 'ner haben Sekunde vor das

    Statement "hüschesPANEL.Visible = False", die

    obtische Wirkung war auf jeden Fall besser, warum

    leuchtet mir auch nicht ganz ein, ich "frimle" halt gern!

     

    Viele Grüße!

    Rudi

    Donnerstag, 25. März 2010 08:22
  • Hallo Rudi,

    Danke dass Du die Lösung gepostet hast.

    Du kannst als Antwort markieren den Beitrag der Dich zu einer Erfolgreichen Lösung geführt hat und Du kannst als hilfreich markieren die Beiträge die Dir geholfen haben dich an die Lösung zu nähern oder die Beiträge von denen Du etwas Neues gelernt hast und die auch für andere hilfreich könnten sein.

    Grüße,

    Robert

    • Als Antwort markiert Rudi Remmiz Montag, 13. August 2018 10:30
    Donnerstag, 25. März 2010 08:30
    Moderator