Практическое руководство. Получение информации о выделенных пользователем ячейках, строках и столбцах элемента управления DataGridView в Windows Forms
Выбранные ячейки, строки или столбцы можно получить из элемента управления DataGridView с помощью соответствующих свойств: SelectedCells, SelectedRows и SelectedColumns. В следующих процедурах вы получите выбранные ячейки и отобразите их индексы строк и столбцов в строке MessageBox.
Получение выбранных ячеек в элементе управления DataGridView
Используйте свойство SelectedCells.
Примечание.
Чтобы избежать отображения потенциально большого количества ячеек, используйте метод AreAllCellsSelected.
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"); } } }
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
Получение выбранных строк в элементе управления DataGridView
Используйте свойство SelectedRows. Чтобы разрешить пользователям выбирать строки, необходимо задать свойству SelectionMode значение FullRowSelect или RowHeaderSelect.
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"); } }
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
Получение выбранных столбцов в элементе управления DataGridView
Используйте свойство SelectedColumns. Чтобы разрешить пользователям выбирать столбцы, необходимо задать свойству SelectionMode значение FullColumnSelect или ColumnHeaderSelect.
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"); } }
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
Компиляция кода
Для этого примера требуются:
элементы управления Button с именами
selectedCellsButton
,selectedRowsButton
иselectedColumnsButton
, каждый из которых имеет обработчики для присоединенного события Click;элемент управления DataGridView с именем
dataGridView1
;ссылки на сборки System, System.Windows.Forms и System.Text.
Отказоустойчивость
При выборе большого количества ячеек, строк или столбцов коллекции, описанные в этом разделе, работают неэффективно. Дополнительные сведения об использовании этих коллекций с большим объемом данных см. в статье Масштабирование элемента управления DataGridView Windows Forms.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по