Gewusst wie: Reagieren auf das Klicken in das DataGrid-Steuerelement in Windows Forms
Aktualisiert: November 2007
![]() |
---|
Obwohl das DataGrid-Steuerelement durch das DataGridView-Steuerelement ersetzt und funktionell erweitert wird, wird das DataGrid-Steuerelement sowohl aus Gründen der Abwärtskompatibilität als auch, falls gewünscht, für die zukünftige Verwendung beibehalten. Weitere Informationen finden Sie unter Unterschiede zwischen dem DataGridView-Steuerelement und dem DataGrid-Steuerelement in Windows Forms. |
Nachdem das DataGrid-Steuerelement in Windows Forms mit einer Datenbank verbunden wurde, können Sie überwachen, auf welche Zellen die Benutzer klicken.
So erkennen Sie, wenn Benutzer des datengebundenen Steuerelements (DataGrid) eine andere Zelle auswählen
Schreiben Sie für eine zweckmäßige Antwort Code in den CurrentCellChanged-Ereignishandler.
Private Sub myDataGrid_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles myDataGrid.CurrentCellChanged MessageBox.Show("Col is " & myDataGrid.CurrentCell.ColumnNumber _ & ", Row is " & myDataGrid.CurrentCell.RowNumber _ & ", Value is " & myDataGrid.Item(myDataGrid.CurrentCell)) End Sub
private void myDataGrid_CurrentCellChanged(object sender, System.EventArgs e) { MessageBox.Show ("Col is " + myDataGrid.CurrentCell.ColumnNumber + ", Row is " + myDataGrid.CurrentCell.RowNumber + ", Value is " + myDataGrid[myDataGrid.CurrentCell] ); }
(Visual C#) Fügen Sie den folgenden Code im Konstruktor des Formulars ein, um den Ereignishandler zu registrieren.
this.myDataGrid.CurrentCellChanged += new System.EventHandler(this.myDataGrid_CurrentCellChanged);
So stellen Sie fest, auf welchen Teil des datengebundenen Steuerelements (DataGrid) die Benutzer klicken
Rufen Sie in einem entsprechenden Ereignishandler die HitTest-Methode auf, beispielsweise für das Ereignis MouseDown oder Click.
Die HitTest-Methode gibt ein DataGrid.HitTestInfo-Objekt zurück, das die Zeile und Spalte eines Bereichs enthält, auf den geklickt wurde.
Private Sub myDataGrid_MouseDown(ByVal sender As Object, _ ByVal e As MouseEventArgs) Handles myDataGrid.MouseDown Dim myGrid As DataGrid = CType(sender, DataGrid) Dim hti As System.Windows.Forms.DataGrid.HitTestInfo hti = myGrid.HitTest(e.X, e.Y) Dim message As String = "You clicked " Select Case hti.Type Case System.Windows.Forms.DataGrid.HitTestType.None message &= "the background." Case System.Windows.Forms.DataGrid.HitTestType.Cell message &= "cell at row " & hti.Row & ", col " & hti.Column Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader message &= "the column header for column " & hti.Column Case System.Windows.Forms.DataGrid.HitTestType.RowHeader message &= "the row header for row " & hti.Row Case System.Windows.Forms.DataGrid.HitTestType.ColumnResize message &= "the column resizer for column " & hti.Column Case System.Windows.Forms.DataGrid.HitTestType.RowResize message &= "the row resizer for row " & hti.Row Case System.Windows.Forms.DataGrid.HitTestType.Caption message &= "the caption" Case System.Windows.Forms.DataGrid.HitTestType.ParentRows message &= "the parent row" End Select Console.WriteLine(message) End Sub
private void myDataGrid_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { DataGrid myGrid = (DataGrid) sender; System.Windows.Forms.DataGrid.HitTestInfo hti; hti = myGrid.HitTest(e.X, e.Y); string message = "You clicked "; switch (hti.Type) { case System.Windows.Forms.DataGrid.HitTestType.None : message += "the background."; break; case System.Windows.Forms.DataGrid.HitTestType.Cell : message += "cell at row " + hti.Row + ", col " + hti.Column; break; case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader : message += "the column header for column " + hti.Column; break; case System.Windows.Forms.DataGrid.HitTestType.RowHeader : message += "the row header for row " + hti.Row; break; case System.Windows.Forms.DataGrid.HitTestType.ColumnResize : message += "the column resizer for column " + hti.Column; break; case System.Windows.Forms.DataGrid.HitTestType.RowResize : message += "the row resizer for row " + hti.Row; break; case System.Windows.Forms.DataGrid.HitTestType.Caption : message += "the caption"; break; case System.Windows.Forms.DataGrid.HitTestType.ParentRows : message += "the parent row"; break; } Console.WriteLine(message); }
(Visual C#) Fügen Sie den folgenden Code im Konstruktor des Formulars ein, um den Ereignishandler zu registrieren.
this.myDataGrid.MouseDown += new System.Windows.Forms.MouseEventHandler (this.myDataGrid_MouseDown);
Siehe auch
Aufgaben
Gewusst wie: Ändern der angezeigten Daten im DataGrid-Steuerelement in Windows Forms zur Laufzeit