【问题标题】:Getting Max Value Of A Point On DataGrid在DataGrid上获取一个点的最大值
【发布时间】:2018-01-03 09:21:06
【问题描述】:

我有一个数据网格,用户将以英寸和英尺为单位输入高度,我想捕捉最高的人(仅基于英尺)。我尝试了以下语法,但出现以下编译错误:

不可调用的成员'DataGridViewRow.Cells不能像方法一样使用

这是我的语法 - 在我的数据网格中获取第 1 列的最大值的适当方法是什么?

double MaxVal = 0;
foreach (DataGridViewRow row in HeightGrid.Rows)
{
    if (row.Cells(1).Value > MaxVal)
    {
        MaxVal = row.Cells(1).Value;
    }
}

【问题讨论】:

    标签: c# .net winforms c#-4.0 datagrid


    【解决方案1】:

    获取最大值:

    MaxVal = dataGridView.Rows.Cast<DataGridViewRow>()
                        .Max(r => Convert.ToDouble(r.Cells[1].Value));
    

    其中Cells[1] 表示第二列。

    到您的第二个查询:

    var biggestRow = dataGridView.Rows.Cast<DataGridViewRow>()
                        .Aggregate((r1,r2) => Convert.ToDouble(r1.Cells[1].Value) > Convert.ToDouble(r2.Cells[1].Value) ? r1 : r2);
    

    这应该会为您提供第二列中值最大的行。从那里,您可以提取第一个和第二个单元格。

    【讨论】:

    • 我实际上是在第二列之后,所以我将其更改为 r.Cells[1] 但是当我尝试运行时,我在输入的 mscorlib.dll 中出现 System.FOrmatException 错误带小数的值,如果这会产生差异,例如 10001.23
    • 对不起,这应该是转换为双精度。试试更新的代码。
    • 这是与 OP 中所述的问题不同的问题,不同的要求会改变您处理问题的方式。例如,也许您应该检索第二列中具有最大值的整行?得到 r.Cells[0] 后你还要添加哪些其他要求?
    • 由于无法查看您的数据,因此很难准确验证其中应该包含哪些内容。您可以尝试将.ToString() 添加到biggestRow.Cells[0].Value.ToString() 以查看里面的内容。
    • @BellHopByDayAmetuerCoderByNigh 哈哈,很高兴听到你要学习新东西。希望对您将来的调试有所帮助。
    【解决方案2】:

    这意味着 Cells 是一个属性,而不是一个方法,因此应该作为 DataGridViewRow.Cells 访问,而不是 DataGridViewRow.Cells()。

    【讨论】:

    • 但我想访问 DataGridView 的索引 1 - 我该如何指定?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2020-12-31
    • 1970-01-01
    相关资源
    最近更新 更多