Как получить коллекцию строк на основе выбранных ячеек в DatagridView - PullRequest
4 голосов
/ 19 января 2012

У меня есть элемент управления DatagridView в форме Windows.Его свойство selectionMode установлено в CellSelect.
Я хочу работать с DatagridViewRow на основе выбранных ячеек.Элемент управления DataGridView связан с источником данных.

Как получить коллекцию строк на основе выбранных ячеек?

Ответы [ 3 ]

6 голосов
/ 23 июня 2014

Ответ, предоставленный Linq, не работает с предоставленным синтаксисом.Datagridview не поддерживает ienumerable, поэтому вы должны использовать:

        IEnumerable<DataGridViewRow> selectedRows = dgPOPLines.SelectedCells.Cast<DataGridViewCell>()
                                           .Select(cell => cell.OwningRow)
                                           .Distinct();
5 голосов
/ 19 января 2012

DataGridView.SelectedCells выдаст вам список выбранных ячеек.Каждый из DataGridViewCell экземпляров в этой коллекции имеет OwningRow, это позволяет вам создать собственную коллекцию строк.

Например:

using System.Linq;

IEnumerable<DataGridViewRow> selectedRows = dgv.SelectedCells
                                               .Select(cell => cell.OwningRow)
                                               .Distinct();
2 голосов
/ 19 января 2012
List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();

foreach(DataGridViewCell cell in dataGridView.SelectedCells)
{
    rowCollection.Add(dataGridView.Rows[cell.RowIndex];
}
...