WindowsフォームでDatagridViewコントロールを使用しています。 selectionModeプロパティはCellSelectに設定されています。
選択したセルに基づいてDatagridViewRowで操作したいです。 DataGridViewコントロールは、DataSourceにバインドされています。DatagridViewで選択したセルに基づいて行コレクションを取得する方法
選択したセルに基づいて行コレクションを取得するにはどうすればよいですか?
WindowsフォームでDatagridViewコントロールを使用しています。 selectionModeプロパティはCellSelectに設定されています。
選択したセルに基づいてDatagridViewRowで操作したいです。 DataGridViewコントロールは、DataSourceにバインドされています。DatagridViewで選択したセルに基づいて行コレクションを取得する方法
選択したセルに基づいて行コレクションを取得するにはどうすればよいですか?
List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();
foreach(DataGridViewCell cell in dataGridView.SelectedCells)
{
rowCollection.Add(dataGridView.Rows[cell.RowIndex];
}
DataGridView.SelectedCells
は、選択されているセルのリストを表示します。そのコレクション内のDataGridViewCell
インスタンスのそれぞれはOwningRow
です。これにより、独自の行コレクションを作成できます。例えば
:
using System.Linq;
IEnumerable<DataGridViewRow> selectedRows = dgv.SelectedCells
.Select(cell => cell.OwningRow)
.Distinct();
同じ行が複数回Collectionの一部になる可能性があります。 – V4Vendetta
@ v4vendetta良い点。私はDistinctを追加しました。 Linq FTW。 – ColinE
提供構文では動作しないのLINQとして提供答え。 Datagridviewはienumerableをサポートしていないため、使用する必要があります。
IEnumerable<DataGridViewRow> selectedRows = dgPOPLines.SelectedCells.Cast<DataGridViewCell>()
.Select(cell => cell.OwningRow)
.Distinct();
*選択したセルに基づく行のコレクション*?あなたはそれを少し拡張することができます、あなたが同じものを探しているかどうかわからない 'SelectedCells'コレクションがありますか? – V4Vendetta