Virtueller Modus im DataGridView-Steuerelement in Windows Forms

Mit dem virtuellen Modus können Sie die Interaktion zwischen dem DataGridView Steuerelement und einem benutzerdefinierten Datencache verwalten. Um den virtuellen Modus zu implementieren, legen Sie die VirtualMode Eigenschaft auf true ein oder mehrere der in diesem Thema beschriebenen Ereignisse fest. In der Regel behandeln Sie mindestens das CellValueNeeded Ereignis, wodurch das Steuerelement werte im Datencache nachschlagen kann.

Gebundener Modus und virtueller Modus

Der virtuelle Modus ist nur erforderlich, wenn Sie den gebundenen Modus ergänzen oder ersetzen müssen. Im gebundenen Modus legen Sie die DataSource Eigenschaft fest, und das Steuerelement lädt automatisch die Daten aus der angegebenen Quelle und sendet Benutzeränderungen zurück an die Eigenschaft. Sie können steuern, welche der gebundenen Spalten angezeigt werden, und die Datenquelle selbst verarbeitet normalerweise Vorgänge wie die Sortierung.

Ergänzender Gebundener Modus

Sie können den gebundenen Modus ergänzen, indem Sie ungebundene Spalten zusammen mit den gebundenen Spalten anzeigen. Dies wird manchmal als "gemischter Modus" bezeichnet und ist nützlich zum Anzeigen von Elementen wie berechneten Werten oder Ui-Steuerelementen (User-Interface).

Da ungebundene Spalten außerhalb der Datenquelle liegen, werden sie von den Sortiervorgängen der Datenquelle ignoriert. Wenn Sie die Sortierung im gemischten Modus aktivieren, müssen Sie die ungebundenen Daten in einem lokalen Cache verwalten und den virtuellen Modus implementieren, damit das DataGridView Steuerelement mit diesem interagieren kann.

Weitere Informationen zum Verwenden des virtuellen Modus zum Verwalten der Werte in ungebundenen Spalten finden Sie in den Beispielen in den DataGridViewCheckBoxColumn.ThreeState Themen zu Eigenschaften- und System.Windows.Forms.DataGridViewComboBoxColumn Klassenreferenzen.

Ersetzen des gebundenen Modus

Wenn der gebundene Modus Ihre Leistungsanforderungen nicht erfüllt, können Sie alle Daten in einem benutzerdefinierten Cache über Ereignishandler im virtuellen Modus verwalten. Sie können beispielsweise den virtuellen Modus verwenden, um einen Just-in-Time-Datenlademechanismus zu implementieren, der nur so viel Daten aus einer netzwerkierten Datenbank abruft, wie für eine optimale Leistung erforderlich ist. Dieses Szenario ist besonders nützlich, wenn Sie mit großen Datenmengen über eine langsame Netzwerkverbindung oder mit Clientcomputern arbeiten, die einen begrenzten ARBEITSSPEICHER oder Speicherplatz aufweisen.

Weitere Informationen zur Verwendung des virtuellen Modus in einem Just-in-Time-Szenario finden Sie unter Implementieren des virtuellen Modus mit Just-In-Time-Datenladevorgang im Windows Forms DataGridView-Steuerelement.

Virtual-Mode Ereignisse

Wenn Ihre Daten schreibgeschützt sind, ist das CellValueNeeded Ereignis möglicherweise das einzige Ereignis, das Sie behandeln müssen. Mit zusätzlichen virtuellen Modus-Ereignissen können Sie bestimmte Funktionen wie Benutzerbearbeitungen, Zeilenzufügung und Löschung sowie Transaktionen auf Zeilenebene aktivieren.

Einige Standardereignisse DataGridView (z. B. Ereignisse, die auftreten, wenn Benutzer Zeilen hinzufügen oder löschen, oder wenn Zellwerte bearbeitet, analysiert, validiert oder formatiert werden) sind ebenfalls im virtuellen Modus nützlich. Sie können auch Ereignisse behandeln, mit denen Sie Werte beibehalten können, die normalerweise nicht in einer gebundenen Datenquelle gespeichert sind, z. B. Zell-QuickInfo-Text, Zell- und Zeilenfehlertext, Zell- und Zeilenverknüpfungsmenüdaten und Zeilenhöhendaten.

Weitere Informationen zum Implementieren des virtuellen Modus zum Verwalten von Lese-/Schreibdaten mit einem Commitbereich auf Zeilenebene finden Sie unter Walkthrough: Implementieren des virtuellen Modus im Windows Forms DataGridView-Steuerelement.

Ein Beispiel, das den virtuellen Modus mit einem Commitbereich auf Zellebene implementiert, finden Sie im Thema zur Eigenschaftsreferenz VirtualMode .

Die folgenden Ereignisse treten nur auf, wenn die VirtualMode Eigenschaft auf true.

Ereignis Beschreibung
CellValueNeeded Wird vom Steuerelement verwendet, um einen Zellwert aus dem Datencache für die Anzeige abzurufen. Dieses Ereignis tritt nur für Zellen in ungebundenen Spalten auf.
CellValuePushed Wird vom Steuerelement verwendet, um benutzereingaben für eine Zelle im Datencache zu übernehmen. Dieses Ereignis tritt nur für Zellen in ungebundenen Spalten auf.

Rufen Sie die UpdateCellValue Methode auf, wenn Sie einen zwischengespeicherten Wert außerhalb eines CellValuePushed Ereignishandlers ändern, um sicherzustellen, dass der aktuelle Wert im Steuerelement angezeigt wird und alle aktuell wirksamen Größenmodi angewendet werden soll.
NewRowNeeded Wird vom Steuerelement verwendet, um die Notwendigkeit einer neuen Zeile im Datencache anzugeben.
RowDirtyStateNeeded Wird vom Steuerelement verwendet, um zu bestimmen, ob eine Zeile keine änderungen enthält.
CancelRowEdit Wird vom Steuerelement verwendet, um anzugeben, dass eine Zeile auf seine zwischengespeicherten Werte zurückgesetzt werden soll.

Die folgenden Ereignisse sind im virtuellen Modus nützlich, können jedoch unabhängig von der VirtualMode Eigenschaftseinstellung verwendet werden.

Events BESCHREIBUNG
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
Wird vom Steuerelement verwendet, um anzugeben, wann Zeilen gelöscht oder hinzugefügt werden, sodass Sie den Datencache entsprechend aktualisieren können.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
Wird vom Steuerelement verwendet, um Zellwerte für die Anzeige zu formatieren und die Benutzereingabe zu analysieren und zu überprüfen.
CellToolTipTextNeeded Wird vom Steuerelement zum Abrufen von QuickInfo-Text für Zellen verwendet, wenn die DataSource Eigenschaft festgelegt oder die VirtualMode Eigenschaft festgelegt ist true.

Zellen-QuickInfos werden nur angezeigt, wenn der ShowCellToolTips Eigenschaftswert ist true.
CellErrorTextNeeded

RowErrorTextNeeded
Wird vom Steuerelement zum Abrufen von Zell- oder Zeilenfehlertext verwendet, wenn die DataSource Eigenschaft festgelegt oder die VirtualMode Eigenschaft festgelegt ist true.

Rufen Sie die UpdateCellErrorText Methode oder die UpdateRowErrorText Methode auf, wenn Sie den Zell- oder Zeilenfehlertext ändern, um sicherzustellen, dass der aktuelle Wert im Steuerelement angezeigt wird.

Zellen- und Zeilenfehler-Glyphen werden angezeigt, wenn die ShowCellErrors Werte und ShowRowErrors Eigenschaftenwerte sind true.
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Wird vom Steuerelement verwendet, um eine Zelle oder Zeile ContextMenuStrip abzurufen, wenn die Steuerelementeigenschaft DataSource festgelegt oder die VirtualMode Eigenschaft festgelegt ist true.
RowHeightInfoNeeded

RowHeightInfoPushed
Wird vom Steuerelement zum Abrufen oder Speichern von Zeilenhöheninformationen im Datencache verwendet. Rufen Sie die Methode auf, wenn Sie die UpdateRowHeightInfo Zwischenspeicherzeilenhöheninformationen außerhalb eines RowHeightInfoPushed Ereignishandlers ändern, um sicherzustellen, dass der aktuelle Wert in der Anzeige des Steuerelements verwendet wird.

Bewährte Methoden im virtuellen Modus

Wenn Sie den virtuellen Modus implementieren, um effizient mit großen Datenmengen zu arbeiten, möchten Sie auch sicherstellen, dass Sie effizient mit dem DataGridView Steuerelement selbst arbeiten. Weitere Informationen zur effizienten Verwendung von Zellformatvorlagen, automatischen Größenanpassungen, Auswahlen und Zeilenfreigaben finden Sie unter Bewährte Methoden zum Skalieren des Windows Forms DataGridView-Steuerelements.

Weitere Informationen