0

如果我在 DataGridView 中选择多个单元格,我如何(在 MsgBox 中)获得(在所选中)具有最高 ColumnIndex 的单元格的值?

List<string> a = new List<string>();

foreach (DataGridViewCell cell in dgvC.SelectedCells)
{
    a.Add(cell.Value.ToString());
}

因此,我需要通过重复通过选择一些单元格创建的列表来填充一行中的其余单元格。

4

1 回答 1

4

如果我在 DataGridView 中选择多个单元格,我如何获得(在 MsgBox 中)具有最高 ColumnIndex 的单元格的值(在所选中)

一种方法是使用 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 排序

另一种方法是检查集合中的第一个和最后一个单元格并比较索引。我们需要同时查看两者,因为根据用户的选择方式,具有更大列索引的选择会发生变化。

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 为真,您应该检查 Null 值

于 2012-06-05T22:51:41.363 回答