Практическое руководство. Получение информации о выделенных пользователем ячейках, строках и столбцах элемента управления DataGridView в Windows Forms
Можно получить выделенных ячеек, строк или столбцов из DataGridView элемента управления с помощью соответствующих свойств: SelectedCells, SelectedRows, и SelectedColumns. В следующих процедурах будет получить выделенных ячеек и отображать их индексы строки и столбца в MessageBox.
Для получения выделенных ячеек в элементе управления DataGridView
Используйте свойство SelectedCells.
Note
Используйте 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"); } } }
Чтобы получить выделенные строки в элементе управления 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"); } }
Чтобы получить из выбранных столбцов в элементе управления 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"); } }
Компиляция кода
Для этого примера требуются:
Button элементы управления с именем
selectedCellsButton,selectedRowsButton, иselectedColumnsButton, каждый из которых обработчики для Click присоединенного события.элемент управления DataGridView с именем
dataGridView1;ссылки на сборки System, System.Windows.Forms и System.Text.
Отказоустойчивость
Коллекций, описанных в этом разделе не осуществляют эффективно, когда выбраны большое количество ячеек, строк или столбцов. Дополнительные сведения об использовании этих коллекций с большими объемами данных, см. в разделе масштабирование элемента управления DataGridView в Windows Forms.