在 DataGridView 中查找最高的 ColumnIndex

本文关键字:ColumnIndex 查找 DataGridView | 更新日期: 2023-09-27 18:36:18

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

List<string> a = new List<string>();
foreach (DataGridViewCell cell in dgvC.SelectedCells)
{
    a.Add(cell.Value.ToString());
}

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

在 DataGridView 中查找最高的 ColumnIndex

如果我在 DataGridView 中选择多个单元格,如何获取具有最高列索引(在选定中)的单元格的(在 MsgBox 中)值

一种方法是使用 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());

注意:您应该检查空值,如果允许用户添加行为真