vb.net ausblenden von Spalten im DataGridView ist sehr langsam
versuchte sich zu verstecken, 44 Spalten eines DataGridView mit 44 Sekunden auf Windows 7 Maschine. Wie kann ich diese Fahrt? Ich verwendete den folgenden code:
'Turn on DataGridView.DoubleBuffered
Dim myType As Type = GetType(DataGridView)
myType.InvokeMember( _
"DoubleBuffered", _
BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetProperty, _
Nothing, DataGridView1, New Object() {True})
'hide the following columns
Me.SuspendLayout()
For Each col As DataGridViewColumn In DataGridView1.Columns
col.Visible = False
Next
Me.ResumeLayout()
Gibt es sonst noch etwas, was mit dem gridview, dass Sie nicht zu zeigen. Zum Beispiel, sind Sie re-quering eine Datenquelle? Dies kann verlangsamen Ihre Antwort, sondern nur ausblenden von Spalten, sollten Sie nicht.
Warum versteckst du alle Spalten? Kannst du nicht ausblenden, das Gitter oder die Bindung der Datenquelle?
Warum versteckst du alle Spalten? Kannst du nicht ausblenden, das Gitter oder die Bindung der Datenquelle?
InformationsquelleAutor Topher | 2013-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie Ihre Schleife zu diesem, da dies die Iteration über die Spalten und mache Sie nicht zu sehen... Für meinen test nur um sicher zu gehen, habe ich noch 250 Spalten und versteckte Sie alle in etwa einer Sekunde mit dieser Schleife...
Dadurch werden alle Spalten entfernen, wenn Sie beschließen, so zu tun...
Und hier ist noch eine Möglichkeit...
Als für Sie die doppelte Pufferung Ihrem datagridview -, Doppel-Puffer der form, wie es wird, zu verringern flimmern, das Auftritt, auf das Formular.
Hier gibt es zwei Optionen: 1 - set Doppel-Puffer in der Eigenschaften-Fenster für das Formular-ODER 2 - initialisieren einer anderen sub double buffer...
Hier ist der code für die doppelte Pufferung für Ihre form... Setzen Sie diese direkt unter Ihrem Klassennamen...
Können Sie den oben genannten code, wenn Sie dies tun, wird dadurch insgesamt Ihre form und die Komponenten, die auf ihm sitzen. Hier ist mein Favorit, obwohl für ein datagridview zu vermeiden flackern, was so überhaupt, einschließlich das scroll-bars...
1 Setzen Sie diese an der Spitze der form...
2 Fügen Sie dem Formular laden...
3 Tropfen dieser neuen Klasse an das Ende Ihrer anderen Klasse (unter-End-Klasse)
Hoffe, Sie Genießen!
Grüße,
MrCodexer
InformationsquelleAutor Çöđěxěŕ
Den autosizemode-Eigenschaft einer Spalte, bei der Einstellung automatisch zu konfigurieren, je nach Inhalt (wie displayedcells) verlangsamt das ganze Netz down. Es scheint neu zu zeichnen "intern". Ich löste meine Netz Probleme mit den Typen, die auf kleine Netze und nur sehr sparsam für die anderen. Dauerte eine Weile zu Abbildung das war das problem, weil es keine externen zeichnen/Ereignis geschieht, es erscheint nur sehr langsam.
InformationsquelleAutor Tim F.