Comment : obtenir les cellules, lignes et colonnes sélectionnées dans le contrôle DataGridView Windows Forms
Vous pouvez obtenir les cellules, lignes ou colonnes sélectionnées d'un contrôle DataGridView en utilisant les propriétés correspondantes : SelectedCells, SelectedRows et SelectedColumns. Dans les procédures suivantes, vous obtiendrez les cellules sélectionnées et afficherez leurs index de lignes et de colonnes dans un MessageBox.
Pour placer les cellules sélectionnées dans un contrôle DataGridView
Utilisez la propriété SelectedCells.
Notes
Utilisez la méthode AreAllCellsSelected pour éviter d'afficher un nombre potentiellement important de cellules.
Private Sub selectedCellsButton_Click( _ ByVal sender As Object, ByVal e As System.EventArgs) _ Handles selectedCellsButton.Click Dim selectedCellCount As Integer = _ dataGridView1.GetCellCount(DataGridViewElementStates.Selected) If selectedCellCount > 0 Then If dataGridView1.AreAllCellsSelected(True) Then MessageBox.Show("All cells are selected", "Selected Cells") Else Dim sb As New System.Text.StringBuilder() Dim i As Integer For i = 0 To selectedCellCount - 1 sb.Append("Row: ") sb.Append(dataGridView1.SelectedCells(i).RowIndex _ .ToString()) sb.Append(", Column: ") sb.Append(dataGridView1.SelectedCells(i).ColumnIndex _ .ToString()) sb.Append(Environment.NewLine) Next i sb.Append("Total: " + selectedCellCount.ToString()) MessageBox.Show(sb.ToString(), "Selected Cells") End If End If End Sub
private void selectedCellsButton_Click(object sender, System.EventArgs e) { Int32 selectedCellCount = dataGridView1.GetCellCount(DataGridViewElementStates.Selected); if (selectedCellCount > 0) { if (dataGridView1.AreAllCellsSelected(true)) { MessageBox.Show("All cells are selected", "Selected Cells"); } else { System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < selectedCellCount; i++) { sb.Append("Row: "); sb.Append(dataGridView1.SelectedCells[i].RowIndex .ToString()); sb.Append(", Column: "); sb.Append(dataGridView1.SelectedCells[i].ColumnIndex .ToString()); sb.Append(Environment.NewLine); } sb.Append("Total: " + selectedCellCount.ToString()); MessageBox.Show(sb.ToString(), "Selected Cells"); } } }
Pour placer les lignes sélectionnées dans un contrôle DataGridView
Utilisez la propriété SelectedRows. Pour permettre aux utilisateurs de sélectionner des lignes, vous devez attribuer à la propriété SelectionMode la valeur FullRowSelect ou RowHeaderSelect.
Private Sub selectedRowsButton_Click( _ ByVal sender As Object, ByVal e As System.EventArgs) _ Handles selectedRowsButton.Click Dim selectedRowCount As Integer = _ dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected) If selectedRowCount > 0 Then Dim sb As New System.Text.StringBuilder() Dim i As Integer For i = 0 To selectedRowCount - 1 sb.Append("Row: ") sb.Append(dataGridView1.SelectedRows(i).Index.ToString()) sb.Append(Environment.NewLine) Next i sb.Append("Total: " + selectedRowCount.ToString()) MessageBox.Show(sb.ToString(), "Selected Rows") End If End Sub
private void selectedRowsButton_Click(object sender, System.EventArgs e) { Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected); if (selectedRowCount > 0) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < selectedRowCount; i++) { sb.Append("Row: "); sb.Append(dataGridView1.SelectedRows[i].Index.ToString()); sb.Append(Environment.NewLine); } sb.Append("Total: " + selectedRowCount.ToString()); MessageBox.Show(sb.ToString(), "Selected Rows"); } }
Pour placer les colonnes sélectionnées dans un contrôle DataGridView
Utilisez la propriété SelectedColumns. Pour permettre aux utilisateurs de sélectionner des colonnes, vous devez attribuer à la propriété SelectionMode la valeur FullColumnSelect ou ColumnHeaderSelect.
Private Sub selectedColumnsButton_Click( _ ByVal sender As Object, ByVal e As System.EventArgs) _ Handles selectedColumnsButton.Click Dim selectedColumnCount As Integer = dataGridView1.Columns _ .GetColumnCount(DataGridViewElementStates.Selected) If selectedColumnCount > 0 Then Dim sb As New System.Text.StringBuilder() Dim i As Integer For i = 0 To selectedColumnCount - 1 sb.Append("Column: ") sb.Append(dataGridView1.SelectedColumns(i).Index.ToString()) sb.Append(Environment.NewLine) Next i sb.Append("Total: " + selectedColumnCount.ToString()) MessageBox.Show(sb.ToString(), "Selected Columns") End If End Sub
private void selectedColumnsButton_Click(object sender, System.EventArgs e) { Int32 selectedColumnCount = dataGridView1.Columns .GetColumnCount(DataGridViewElementStates.Selected); if (selectedColumnCount > 0) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < selectedColumnCount; i++) { sb.Append("Column: "); sb.Append(dataGridView1.SelectedColumns[i].Index .ToString()); sb.Append(Environment.NewLine); } sb.Append("Total: " + selectedColumnCount.ToString()); MessageBox.Show(sb.ToString(), "Selected Columns"); } }
Compilation du code
Cet exemple nécessite les éléments suivants :
Des contrôles Button nommés selectedCellsButtonnommé, selectedRowsButton et selectedColumnsButton, chacun avec les gestionnaires pour l'événement Click joint.
Un contrôle DataGridView nommé dataGridView1.
Références aux assemblys System, System.Windows.Forms et System.Text.
Programmation fiable
Les collections décrites dans cette rubrique ne s'exécutent pas efficacement lorsque de grands nombres de cellules, de lignes, ou de colonnes sont sélectionnées. Pour plus d'informations sur l'utilisation de ces collections avec de grandes quantités de données, consultez Meilleures pratiques pour la mise à l'échelle du contrôle DataGridView Windows Forms.
Voir aussi
Référence
Autres ressources
Sélection et utilisation du Presse-papiers avec le contrôle DataGridView Windows Forms