Comment : répondre aux clics dans le contrôle DataGrid Windows Forms
Notes
Le contrôle DataGridView remplace le contrôle DataGrid et lui ajoute des fonctionnalités ; toutefois, le contrôle DataGrid est conservé pour la compatibilité descendante et l'utilisation future si tel est votre choix. Pour plus d'informations, consultez Différences entre les contrôles DataGridView et DataGrid Windows Forms.
Le contrôle DataGrid Windows Forms une fois connecté à la base de données, vous pouvez surveiller la cellule sur laquelle l'utilisateur a cliqué.
Pour détecter à quel moment l'utilisateur du contrôle DataGrid sélectionne une cellule différente
Dans le gestionnaire d'événements CurrentCellChanged, écrivez du code pour fournir la réponse appropriée.
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#) Placez le code suivant dans le constructeur du formulaire pour inscrire le gestionnaire d'événements.
this.myDataGrid.CurrentCellChanged += new System.EventHandler(this.myDataGrid_CurrentCellChanged);
Pour identifier la partie du contrôle DataGrid sur laquelle l'utilisateur a cliqué
Appelez la méthode HitTest dans un gestionnaire d'événements approprié, tel que celui de l'événement MouseDown ou Click.
La méthode HitTest retourne un objet DataGrid.HitTestInfo qui contient la ligne et la colonne de la zone sélectionnée.
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#) Placez le code suivant dans le constructeur du formulaire pour inscrire le gestionnaire d'événements.
this.myDataGrid.MouseDown += new System.Windows.Forms.MouseEventHandler (this.myDataGrid_MouseDown);