PC friert beim Scrollen eines Panels mit vielen Controls ein

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

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    PC friert beim Scrollen eines Panels mit vielen Controls ein

    Guten Tag zusammen,

    ich habe ein Panel in dem dynamisch unbestimmt viele Controls vom Typ Panel erstellt werden.
    Mein Problem ist, dass nach dem Scrollen(Maustaste loslassen) des Panels in dem sich die Controls befinden nicht nur die Anwendung sondern der Komplette PC hängt:/ .

    - Nach dem Scrollen wird kein Code ausgeführt.
    - Die Anzahl der erstellten Controls kann schnell über tausend gehen.
    - Jedes Control hat Handler.
    - Der Zeitraum des "lags" ist unterschiedlich zwischen 1-5 sek und tritt nur nach dem Scrollen auf.

    Hab ihr Ideen woran es liegen kann und wie ich dieses Problem beheben kann?

    Hier noch ein kleines Beispiel:
    Ihr benötigt noch ein Panel auf der Form

    VB.NET-Quellcode

    1. ​Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. For i = 0 To 8
    3. For j = 0 To 300
    4. Dim pnl As New Panel With {
    5. .Name = i.ToString & " " & j.ToString,
    6. .Width = 25,
    7. .Height = 25,
    8. .Location = New Point(j * .Width + j, i * .Height + i),
    9. .BackColor = Color.Green
    10. }
    11. Panel1.Controls.Add(pnl)
    12. Next
    13. Next
    14. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „crash“ ()

    Habe den Code gestestet, bei mir friert des System nicht ein.
    Ich empfehle dir mal die "Windows Protokollanzeige" in System aus zulesen.
    Vieleicht gibt es da ein Problem!
    Falls alles nicht hilft kann man mit einen Tool auch das .NET Framework deinstallieren und erneut installieren
    Viel Glück! :thumbsup:

    Link:
    pcwelt.de/ratgeber/Protokollan…nis-Protokoll-439826.html
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss das ist sehr komisch.

    Ich habe es jetzt an 3 verschiedenen PC´s mit immer dem selben Ergebnis getestet (Debug als auch Release).
    In der Protokollanzeige bekomme ich kein neues Ereignis.

    Kannst du nochmal versuchen unmittelbar nach dem scrollen die Form zu verschieben oder zu minimieren?
    @crash Was sollen die vielen Controls?
    Nimm ein TablelayoutPanel, ein FlowLayoutPanel oder ein DataGridView.
    Diese beiden kannst Du während einer langen Bearbeitungsphase daran hindern, sich selbst zu refreshen:

    VB.NET-Quellcode

    1. TableLayoutPanel1.SuspendLayout()
    2. ' was tun
    3. TableLayoutPanel1.ResumeLayout(false)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    crash schrieb:

    Jedes Control hat Handler.
    Wenn, dann bitte alles diesbezüglich posten. Wenn dann natürlich für > 2400 CEs irgendwelche Event-Feuerwerke entstehen, die Du dann noch irgendwo verarbeitest, dann fischen wir hier im Trüben und können das Problem nicht adäquat nachstellen.
    Aber wenn es Dich beruhigt: Bei mir hängt es dann auch.
    Aber ich dächt, wir hätten im Forum solch ein Problem mal irgendwo schonmal gehabt ...
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @RodFromGermany Danke Ich werde mal das TalbeLayoutPanel testen. Viel mehr interessiert mich aber warum der PC nach dem Scrollen hängen bleibt.
    *EDIT Beim TableLayoutPanel gibt es das selbe Problem nach dem Scrollen. :whistling:

    @VaporiZed ImPprinzip sind es nur Click bzw. MouseDown Events für die CEs, aber das Beispiel ist ja komplett ohne.
    Da interessiert mich einfach nur was genau nach dem Scrollen abläuft, dass es den kompletten PC lahm legt, ohne das es der Taskmanager bzw. Ressourcenmonitor mitbekommt.

    Hier mal ein Bild von dem was ich bisher damit gemacht habe.
    Bilder
    • Jahresplan.PNG

      124,37 kB, 2.837×543, 80 mal angesehen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „crash“ ()

    1. Auch wenn es das aktuelle Problem nicht löst: Ich würd an Deiner Stelle ein DGV nehmen.
    2. Bilder-Uploads bitte forenintern über [+ Erweiterte Antwort]
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.