DGV-Spalten ausblenden langsam

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von GünterD.

    DGV-Spalten ausblenden langsam

    Hallo Zusammen,

    ich versuche meine Anwendung hinsichtlich Performance zu optimieren.

    Ein "Zeit-Fresser" ist das ausblenden von Spalten in einem datengebundenen Datagridview.

    Mit dieser Routine

    VB.NET-Quellcode

    1. Sub DGVSpaltenAusblenden()
    2. Tbl_KalkulationAGDataGridView.SuspendLayout()
    3. For s = 14 To 34
    4. If IsDBNull(AGDataGridView.Rows(1).Cells(s).Value) Then
    5. AGDataGridView.Columns(s).Visible = False ' ausblenden
    6. End If
    7. Next
    8. Tbl_KalkulationAGDataGridView.ResumeLayout()
    9. End Sub

    werden für das Prüfen bzw. Ausblenden von 20 Spalten ca. 0,8 Sekunden benötigt.

    Habt Ihr einen Tipp wie es schneller gehen könnte?
    Gruß Günter
    Ich hab mir jetzt mal ein DGV gebastelt, welches an eine List(Of Foo) gebunden ist, wobei es 30000 Foos mit je 30 Propertys gibt. Das Ausblenden von einem guten Dutzend Spalten dauert eine für mich nicht bemerkbare Zeit (< 0,01 s?). Und das ohne SuspendLayout/ResumeLayout. Ist da bei der ein oder anderen Spalte der SizeMode auf AllCells gestellt? Das frisst Zeit. Entkoppel notfalls auch mal die BindingSource.
    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.
    Hallo VaporiZed,

    guter Tipp.

    Ich habe zunächst alle Events, die durch das Ausblenden ausgelöst werden deaktiviert.
    Danach bei allen Spalten den SizeMode auf NotSet gesetzt.
    ... leider braucht die Routine immer noch gleich lang!

    Wie kann ich die BindingSource entkoppeln?

    Oder gibt's noch andere Ideen, nach denen ich schauen kann?




    Wo könnte ich noch suchen?
    Gruß Günter
    Läuft es schneller wenn du (testhalber) die DBNull Prüfung weg lässt?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen