Exemplarische Vorgehensweise: Überprüfen von Daten im DataGridView-Steuerelement in Windows Forms
Wenn Sie für Benutzer Dateneingabefunktionen anzeigen, müssen Sie häufig die in Ihr Formular eingegebenen Daten überprüfen. Die DataGridView-Klasse bietet eine bequeme Möglichkeit, eine Validierung durchzuführen, bevor die Daten in den Datenspeicher committet werden. Sie können Daten überprüfen, indem Sie das CellValidating-Ereignis behandeln, das von der DataGridView-Instanz ausgelöst wird, wenn sich die aktuelle Zelle ändert.
In dieser exemplarischen Vorgehensweise werden Sie Zeilen aus der Tabelle Customers
in der Northwind-Beispieldatenbank abrufen und in einem DataGridView-Steuerelement anzeigen. Wenn ein Benutzer eine Zelle in der CompanyName
-Spalte bearbeitet und versucht, die Zelle zu verlassen, prüft der CellValidating-Ereignishandler die neue Zeichenfolge für den Firmennamen, um sicherzustellen, dass sie nicht leer ist. Wenn der neue Wert eine leere Zeichenfolge ist, verhindert DataGridView, dass der Cursor des Benutzers die Zelle verlässt, bis eine nicht leere Zeichenfolge eingegeben wird.
Informationen zum Kopieren des Codes in diesem Thema als einzelner Eintrag finden Sie unter Vorgehensweise: Überprüfen von Daten im DataGridView-Steuerelement in Windows Forms.
Voraussetzungen
Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
- Zugriff auf einen Server mit der SQL Server-Beispieldatenbank „Northwind“.
Erstellen des Formulars
So überprüfen Sie die in ein DataGridView eingegebenen Daten
Erstellen Sie eine Klasse, die von Form abgeleitet ist und ein DataGridView-Steuerelement sowie eine BindingSource-Komponente enthält.
Das folgende Codebeispiel bietet eine grundlegende Initialisierung und umfasst eine
Main
-Methode.using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; public class Form1 : System.Windows.Forms.Form { private DataGridView dataGridView1 = new DataGridView(); private BindingSource bindingSource1 = new BindingSource(); public Form1() { // Initialize the form. this.dataGridView1.Dock = DockStyle.Fill; this.Controls.Add(dataGridView1); this.Load += new EventHandler(Form1_Load); this.Text = "DataGridView validation demo (disallows empty CompanyName)"; }
Imports System.Data Imports System.Data.SqlClient Imports System.Windows.Forms Public Class Form1 Inherits System.Windows.Forms.Form Private WithEvents dataGridView1 As New DataGridView() Private bindingSource1 As New BindingSource() Public Sub New() ' Initialize the form. Me.dataGridView1.Dock = DockStyle.Fill Me.Controls.Add(dataGridView1) Me.Text = "DataGridView validation demo (disallows empty CompanyName)" End Sub
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }
<STAThread()> _ Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub End Class
Implementieren Sie eine Methode in der Klassendefinition Ihres Formulars, um die Details der Verbindung mit der Datenbank zu verarbeiten.
In diesem Codebeispiel wird eine
GetData
-Methode verwendet, die ein aufgefülltes DataTable-Objekt zurückgibt. Sorgen Sie dafür, dass dieconnectionString
-Variable auf einen Wert festgelegt wird, der für Ihre Datenbank geeignet ist.Wichtig
Das Speichern vertraulicher Informationen (z. B. eines Kennworts) innerhalb der Verbindungszeichenfolge kann die Sicherheit einer Anwendung beeinträchtigen. Der Zugriff auf eine Datenbank lässt sich mithilfe der Windows-Authentifizierung (wird auch als integrierte Sicherheit bezeichnet) sicherer steuern. Weitere Informationen finden Sie unter Protecting Connection Information (Schützen von Verbindungsinformationen).
private static DataTable GetData(string selectCommand) { string connectionString = "Integrated Security=SSPI;Persist Security Info=False;" + "Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096"; // Connect to the database and fill a data table. SqlDataAdapter adapter = new SqlDataAdapter(selectCommand, connectionString); DataTable data = new DataTable(); data.Locale = System.Globalization.CultureInfo.InvariantCulture; adapter.Fill(data); return data; }
Private Shared Function GetData(ByVal selectCommand As String) As DataTable Dim connectionString As String = _ "Integrated Security=SSPI;Persist Security Info=False;" + _ "Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096" ' Connect to the database and fill a data table. Dim adapter As New SqlDataAdapter(selectCommand, connectionString) Dim data As New DataTable() data.Locale = System.Globalization.CultureInfo.InvariantCulture adapter.Fill(data) Return data End Function
Implementieren Sie einen Handler für das Load-Ereignis Ihres Formulars, das die DataGridView und die BindingSource initialisiert und die Datenbindung einrichtet.
private void Form1_Load(System.Object sender, System.EventArgs e) { // Attach DataGridView events to the corresponding event handlers. this.dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating); this.dataGridView1.CellEndEdit += new DataGridViewCellEventHandler(dataGridView1_CellEndEdit); // Initialize the BindingSource and bind the DataGridView to it. bindingSource1.DataSource = GetData("select * from Customers"); this.dataGridView1.DataSource = bindingSource1; this.dataGridView1.AutoResizeColumns( DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); }
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Me.Load ' Initialize the BindingSource and bind the DataGridView to it. bindingSource1.DataSource = GetData("select * from Customers") Me.dataGridView1.DataSource = bindingSource1 Me.dataGridView1.AutoResizeColumns( _ DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader) End Sub
Implementieren Sie Handler für die CellValidating- und CellEndEdit-Ereignisse des DataGridView-Steuerelements.
Mit dem CellValidating-Ereignishandler bestimmen Sie, ob der Wert einer Zelle in der
CompanyName
-Spalte leer ist. Wenn der Zellenwert die Validierung nicht besteht, legen Sie die Cancel-Eigenschaft der System.Windows.Forms.DataGridViewCellValidatingEventArgs-Klasse auftrue
fest. Dies bewirkt, dass das DataGridView-Steuerelement verhindert, dass der Cursor die Zelle verlässt. Legen Sie die ErrorText-Eigenschaft in der Zeile auf eine aussagekräftige Zeichenfolge fest. Dadurch wird ein Fehlersymbol mit einer QuickInfo angezeigt, die den Fehlertext enthält. Legen Sie im CellEndEdit-Ereignishandler die ErrorText-Eigenschaft in der Zeile auf die leere Zeichenfolge fest. Das CellEndEdit-Ereignis tritt nur ein, wenn die Zelle den Bearbeitungsmodus verlässt, was nicht möglich ist, wenn sie die Validierung nicht besteht.private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { string headerText = dataGridView1.Columns[e.ColumnIndex].HeaderText; // Abort validation if cell is not in the CompanyName column. if (!headerText.Equals("CompanyName")) return; // Confirm that the cell is not empty. if (string.IsNullOrEmpty(e.FormattedValue.ToString())) { dataGridView1.Rows[e.RowIndex].ErrorText = "Company Name must not be empty"; e.Cancel = true; } } void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { // Clear the row error in case the user presses ESC. dataGridView1.Rows[e.RowIndex].ErrorText = String.Empty; }
Private Sub dataGridView1_CellValidating(ByVal sender As Object, _ ByVal e As DataGridViewCellValidatingEventArgs) _ Handles dataGridView1.CellValidating Dim headerText As String = _ dataGridView1.Columns(e.ColumnIndex).HeaderText ' Abort validation if cell is not in the CompanyName column. If Not headerText.Equals("CompanyName") Then Return ' Confirm that the cell is not empty. If (String.IsNullOrEmpty(e.FormattedValue.ToString())) Then dataGridView1.Rows(e.RowIndex).ErrorText = _ "Company Name must not be empty" e.Cancel = True End If End Sub Private Sub dataGridView1_CellEndEdit(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles dataGridView1.CellEndEdit ' Clear the row error in case the user presses ESC. dataGridView1.Rows(e.RowIndex).ErrorText = String.Empty End Sub
Testen der Anwendung
Sie können das Formular jetzt testen, um sicherzustellen, dass das Verhalten wie erwartet ausfällt.
So testen Sie das Formular
Kompilieren Sie die Anwendung, und führen Sie sie aus.
Sie sehen eine DataGridView-Instanz, die mit Daten aus der Tabelle
Customers
gefüllt ist. Wenn Sie auf eine Zelle in der SpalteCompanyName
doppelklicken, können Sie den Wert bearbeiten. Wenn Sie alle Zeichen löschen und die TAB-TASTE drücken, um die Zelle zu verlassen, verhindert die DataGridView-Instanz das Verlassen der Zelle. Wenn Sie eine nicht leere Zeichenfolge in die Zelle eingeben, können Sie mit dem DataGridView-Steuerelement die Zelle verlassen.
Nächste Schritte
Diese Anwendung vermittelt Ihnen ein grundlegendes Verständnis der Funktionen des DataGridView-Steuerelements. Sie können das Aussehen und Verhalten des DataGridView -Steuerelements auf verschiedene Weise anpassen:
Ändern Sie die Rahmen- und Kopfzeilenformate. Weitere Informationen finden Sie unter Vorgehensweise: Ändern des Rahmen- und Rasterlinienstils im DataGridView-Steuerelement in Windows Forms.
Aktivieren oder beschränken Sie die Benutzereingabe für das DataGridView-Steuerelement. Weitere Informationen finden Sie unter Gewusst wie: Verhindern, dass Zeilen im DataGridView-Steuerelement in Windows Forms hinzugefügt und gelöscht werden und Gewusst wie: Zuweisen von schreibgeschützten Spalten im DataGridView-Steuerelement von Windows Forms.
Überprüfen Sie die Benutzereingabe auf datenbankbezogene Fehler. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Behandeln von Fehlern, die während der Dateneingabe im DataGridView-Steuerelement in Windows Forms auftreten.
Verarbeiten Sie sehr große Datasets mithilfe des virtuellen Modus. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Implementieren des virtuellen Modus im DataGridView-Steuerelement in Windows Forms.
Passen Sie die Darstellung von Zellen an. Weitere Informationen finden Sie unter Vorgehensweise: Anpassen der Darstellung von Zellen im DataGridView-Steuerelement von Windows Forms und Vorgehensweise: Festlegen von Schriftart- und Farbstilen im DataGridView-Steuerelement in Windows Forms.
Weitere Informationen
- DataGridView
- BindingSource
- Dateneingabe im DataGridView-Steuerelement in Windows Forms
- Vorgehensweise: Überprüfen von Daten im DataGridView-Steuerelement in Windows Forms
- Exemplarische Vorgehensweise: Behandeln von Fehlern, die während der Dateneingabe im DataGridView-Steuerelement in Windows Forms auftreten
- Schützen von Verbindungsinformationen
.NET Desktop feedback
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für