Share via


Verwenden der Zeile für neue Datensätze im DataGridView-Steuerelement in Windows Forms

Wenn Sie DataGridView für die Bearbeitung von Daten in Ihrer Anwendung verwenden, möchten Sie Ihren Benutzern häufig die Möglichkeit geben, neue Datenzeilen zum Datenspeicher hinzuzufügen. Das DataGridView-Steuerelement unterstützt diese Funktionalität durch Bereitstellen einer Zeile für neue Datensätze, die immer als letzte Zeile angezeigt wird. Sie ist mit einem Sternchen (*) in der Zeilenüberschrift markiert. In den folgenden Abschnitten werden einige der Aspekte erläutert, die Sie berücksichtigen sollten, wenn Sie mit aktivierter Zeile für neue Datensätze programmieren.

Anzeigen der Zeile für neue Datensätze

Geben Sie mithilfe der AllowUserToAddRows-Eigenschaft an, ob die Zeile für neue Datensätze angezeigt wird. Der Standardwert dieser Eigenschaft ist true.

Für den datengebundenen Fall wird die Zeile für neue Datensätze angezeigt, wenn die AllowUserToAddRows-Eigenschaft des Steuerelements und die IBindingList.AllowNew-Eigenschaft der Datenquelle beide true lauten. Wenn eine der beiden Eigenschaft false lautet, wird die Zeile nicht angezeigt.

Auffüllen der Zeile für neue Datensätze mit Standarddaten

Wenn der Benutzer die Zeile für neue Datensätze als aktuelle Zeile auswählt, löst das DataGridView-Steuerelement das DefaultValuesNeeded-Ereignis aus.

Dieses Ereignis bietet Zugriff auf das neue DataGridViewRow-Element und ermöglicht es Ihnen, die neue Zeile mit Standarddaten aufzufüllen. Weitere Informationen finden Sie unter Vorgehensweise: Angeben von Standardwerten für neue Zeilen im DataGridView-Steuerelement in Windows Forms.

Die Zeilensammlung

Die Zeile für neue Datensätze ist in der Rows-Auflistung des DataGridView-Steuerelements enthalten, verhält sich jedoch in zwei Punkten anders:

  • Die Zeile für neue Datensätze kann nicht programmgesteuert aus der Rows-Auflistung entfernt werden. InvalidOperationException wird ausgelöst, wenn dies versucht wird. Der Benutzer kann die Zeile für neue Datensätze auch nicht löschen. Die DataGridViewRowCollection.Clear-Methode entfernt diese Zeile nicht aus der Rows-Auflistung.

  • Nach der Zeile für neue Datensätze kann keine Zeile hinzugefügt werden. InvalidOperationException wird ausgelöst, wenn dies versucht wird. Daher ist die Zeile für neue Datensätze immer die letzte Zeile im DataGridView-Steuerelement. Die Methoden für DataGridViewRowCollection zum Hinzufügen von Zeilen (Add, AddCopy und AddCopies) rufen alle Einfügemethoden intern auf, wenn die Zeile für neue Datensätze vorhanden ist.

Visuelle Anpassung der Zeile für neue Datensätze

Wenn die Zeile für neue Datensätze erstellt wird, basiert sie auf der Zeile, die von der RowTemplate-Eigenschaft angegeben wird. Alle Zellenstile, die für diese Zeile nicht angegeben sind, werden von anderen Eigenschaften geerbt. Weitere Informationen zur Vererbung von Zellenstilen finden Sie unter Zellenstile im DataGridView-Steuerelement in Windows Forms.

Die anfänglichen Werte, die von Zellen in der Zeile für neue Datensätze angezeigt werden, werden aus der Eigenschaft DefaultNewRowValue jeder Zelle abgerufen. Für Zellen des Typs DataGridViewImageCell gibt diese Eigenschaft ein Platzhalterbild zurück. Andernfalls gibt diese Eigenschaft null zurück. Sie können diese Eigenschaft außer Kraft setzen, um einen benutzerdefinierten Wert zurückzugeben. Diese anfänglichen Werte können jedoch durch einen DefaultValuesNeeded-Ereignishandler ersetzt werden, wenn der Fokus auf die Zeile für neue Datensätze übergeht.

Die Standardsymbole für die Headerzelle dieser Zeile (Pfeil oder Sternchen) werden nicht öffentlich verfügbar gemacht. Wenn Sie die Symbole anpassen möchten, müssen Sie eine benutzerdefinierte DataGridViewRowHeaderCell-Klasse erstellen.

Die Standardsymbole verwenden die ForeColor-Eigenschaft der DataGridViewCellStyle-Klasse, die in der Headerzelle der Zeile verwendet wird. Die Standardsymbole werden nicht gerendert, wenn nicht genügend Platz vorhanden ist, um sie vollständig anzuzeigen.

Wenn für die Zeilenheaderzelle eine Zeichenfolgenwert festgelegt ist und nicht genügend Platz für Text und Symbol vorhanden ist, wird zuerst das Symbol ausgeblendet.

Sortierung

Im Ungebunden-Modus werden neue Datensätze immer am Ende von DataGridView hinzugefügt, auch wenn der Benutzer den Inhalt von DataGridView sortiert hat. Der Benutzer muss die Sortierung erneut anwenden, um die Zeile an der richtigen Position zu platzieren. Dieses Verhalten ähnelt dem des ListView-Steuerelements.

Im datengebunden und virtuellen Modus ist das Einfügeverhalten beim Anwenden einer Sortierung abhängig von der Implementierung des Datenmodells. Bei ADO.NET wird die Zeile sofort an der richtigen Position platziert.

Weitere Hinweise zur Zeile für neue Datensätze

Sie können die Visible-Eigenschaft dieser Zeile nicht auf false festlegen. InvalidOperationException wird ausgelöst, wenn dies versucht wird.

Die Zeile für neue Datensätze wird immer im nicht ausgewählten Zustand erstellt.

Virtueller Modus

Wenn Sie den virtuellen Modus implementieren, müssen Sie nachverfolgen, wann eine Zeile für neue Datensätze im Datenmodell benötigt wird und wann das Hinzufügen der Zeile rückgängig gemacht werden soll. Die genaue Implementierung dieser Funktionalität hängt von der Implementierung des Datenmodells und seiner Transaktionssemantik ab, z. B. davon, ob sich der Commitbereich auf Zellen- oder Zeilenebene befindet. Weitere Informationen finden Sie unter Virtueller Modus im DataGridView-Steuerelement in Windows Forms.

Weitere Informationen