Discussion:
Neuzeichen eines DataGridView verhindern
(zu alt für eine Antwort)
Martin Horst
2008-01-21 09:09:28 UTC
Permalink
Hi,

gibt es eine Möglichkeit, wie z.B. bei dem ListView Control
(BeginUpdate), daß Neuzeichnen eines DataGridView zu verhindern. Ich
fülle ein DataGridView von Hand und man sieht wie es sich ständig
neuzeichnet.

Danke
Martin
Adrian Stern
2008-01-21 11:00:43 UTC
Permalink
Post by Martin Horst
Hi,
gibt es eine Möglichkeit, wie z.B. bei dem ListView Control
(BeginUpdate), daß Neuzeichnen eines DataGridView zu verhindern. Ich
fülle ein DataGridView von Hand und man sieht wie es sich ständig
neuzeichnet.
Danke
Martin
Keine Ahnung ob ich verstehe was du meinst, aber kannst du nicht eine
DataTable erstellen und diese befüllen und anschliessend die DataTable
als Source der DataGridView zuweisen?
Thomas Griepentrog
2008-01-21 12:14:43 UTC
Permalink
Hallo Martin,

du kannst, wenn du Daten in dein DataGrid schreibst, vorher folgendes
machen:

DataGridView1.SuspendLayout();
Daten in DGV schreiben;
DataGridView1.ResumeLayout();

Damit werden dann alle vorgenommenen Änderungen auf einmal dargestellt.

Hoffe, das hilft dir.

Thomas
Martin Horst
2008-01-21 12:36:53 UTC
Permalink
Hallo Thomas,
Post by Thomas Griepentrog
Hallo Martin,
du kannst, wenn du Daten in dein DataGrid schreibst, vorher folgendes
DataGridView1.SuspendLayout();
Daten in DGV schreiben;
DataGridView1.ResumeLayout();
Damit werden dann alle vorgenommenen Änderungen auf einmal dargestellt.
Hoffe, das hilft dir.
Thomas
das bringt nur so halb etwas. Man sieht, wie sich die Scrollbalken
ständig neu zeichnen. Ich verstehe auch absolut nicht, warum Microsoft
die BeginUpdate und EndUpdate Methoden nicht in die Control Klasse
gepackt haben. Die entsprechenden API Methoden sind ja für alle
Fensterklassen definiert.

Danke und Gruß
Martin
Frank Dzaebel
2008-01-21 13:50:41 UTC
Permalink
Hallo Martin,
Post by Martin Horst
gibt es eine Möglichkeit, wie z.B. bei dem ListView Control
(BeginUpdate), daß Neuzeichnen eines DataGridView zu verhindern. Ich
fülle ein DataGridView von Hand und man sieht wie es sich ständig
neuzeichnet.
Es verschiedene Möglichkeiten die Performance
zu verbessern. Es gibt aber auch spezielle
Rich-Drawing-Features beim DataGridView, die
eine Aktualisierung ggf. verlangsamen
(TextRenderer).

Zunächst eine mögliche Lösung (Pseudo-Code):

private void Form1_Load(object sender, EventArgs e)
{
this.Show();
ZeigeMeldung("Fülle DataTable: Gedruckte_Seiten ...");
gedruckte_SeitenBindingSource.RaiseListChangedEvents = false;

this.gedruckte_SeitenTableAdapter.Fill(this.printVolumeDBDataSet.Gedruckte_Seiten);
gedruckte_SeitenBindingSource.RaiseListChangedEvents = true;
ZeigeMeldung("Gefüllt. Starte CurrencyManager.Refresh() ...");
gedruckte_SeitenBindingSource.CurrencyManager.Refresh();
ZeigeMeldung("Refresh ausgeführt!");
}

private void ZeigeMeldung(string meldung)
{
this.textBox1.Text += meldung + "\r\n";
textBox1.ScrollToCaret(); Application.DoEvents();
}

// =======================

Dinge wie DataSource neuzusetzen, würde ich
nicht empfehlen.

// =======================

Sehr schnell meist über die VirtualMode-Technik:

[Nutzung grosser Datenmengen beim DataGridView]
http://dzaebel.net/DgvVirtual.htm


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Loading...