DataGridView で複数のセルを選択した場合、(選択した中で) 最も高い ColumnIndex を持つセルの値を (MsgBox で) 取得するにはどうすればよいですか?
これを行う 1 つの方法は、linq を使用して、選択したセルのコレクションを ColumnIndex で並べ替えてから、最初のセルを取得することです。
var selectedCells =dgvC.SelectedCells;
var MaxColumn = (from DataGridViewCell cell in selectedCells
orderby cell.ColumnIndex descending
select cell).FirstOrDefault();
MessageBox.Show(MaxColumn.Value.ToString());
ユーザーが選択した方法 (上から下または下から上) に応じて、最初の行または最後の行から値を取得することに注意してください。それが重要な場合は、RowIndex で注文する必要があります
もう 1 つの方法は、コレクション内の最初と最後のセルを調べて、インデックスを比較することです。ユーザーがどのように選択したかによって、列インデックスが大きい方が変わるため、両方を調べる必要があります。
var selectedCells = dgvc.SelectedCells;
var cellStart = selectedCells[0];
var cellEnd = selectedCells[selectedCells.Count -1];
if (cellStart.ColumnIndex > cellEnd .ColumnIndex)
MessageBox.Show(cellStart.Value.ToString());
else
MessageBox(cellEnd.Value.ToString());
注: AllowUsersToAddRow が true の場合は、Null 値を確認する必要があります。