在DataGridView中找到最高的ColumnIndex

时间:2012-06-05 22:19:50

标签: c# winforms datagridview

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

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

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

所以,我需要通过重复选择一些单元格所做的列表来连续填充其余的单元格。

1 个答案:

答案 0 :(得分:4)

  

如果我在DataGridView中选择多个单元格,我如何获得具有最高ColumnIndex(在所选内容中)的单元格(在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());

注意:如果AllowUsersToAddRow为true,则应检查Null值