【问题标题】:C#: How do I get the value of an unbound DataGridView cell?C#:如何获取未绑定的 DataGridView 单元格的值?
【发布时间】:2017-04-03 21:41:35
【问题描述】:

我是 C# 的新手。我已经看到回答如何在未绑定网格中设置值的问题。这似乎有效。但是,要收回价值似乎并没有。我确实尝试过寻找答案。

我有一个未绑定的DataGridView,名为analogGrid。数据存储在外部类 RTUdata 中。这是一个非常简单的网格,第一列是只读的,带有行号。第二个值是用户可以更改的值,应该将其存储回 RTUdata。使用这种方法将数据加载到网格中似乎可以正常工作:

private void loadAnalog()
{
    analogGrid.RowCount = RTUdata.getAnalogCount(RTUdata.getRTUaddr());
    for (UInt16 i = 0; i < RTUdata.getAnalogCount(RTUdata.getRTUaddr()); i++)
    {
        analogGrid.Rows[i].Cells[0].ValueType = typeof(System.UInt16);
        analogGrid.Rows[i].Cells[0].Value = i;
        analogGrid.Rows[i].Cells[1].ValueType = typeof(System.Int32);
        analogGrid.Rows[i].Cells[1].Value = RTUdata.getAnalogValue(RTUdata.getRTUaddr(), i);
    }
}

我不太确定我应该挂钩哪个事件,至于何时获取用户输入的值并将其放回 RTUdata。但是,我猜它会是 CellValidated()。所以,我有这个代码:

private void analogGrid_CellValidated(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex != 1)
        return;

    Int32 value = (Int32)binaryGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
    RTUdata.setAnalogValue(RTUdata.getRTUaddr(), e.RowIndex, value);        
}

但是,就行了

Int32 value = (Int32)binaryGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

我收到“System.InvalidCastException: 'Specified cast is not valid.'”的运行时错误据我所知,“Value”应该是 Int32,我在加载网格时设置了值类型。那么,为什么演员表无效?

感谢您的帮助!

【问题讨论】:

  • 您确定从单元格中读取的值是整数吗?也许它的字符串,您需要将其转换为整数,而不是强制转换。
  • (FACEPALM) 实际上我确实尝试过以这种方式获取字符串:“binaryGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].ToString()”需要。但我没有尝试“...Value.Tostring()”。这就是问题所在。我想我认为单元格类型应该仍然是 UInt32,因为我将其指定为类型。
  • 不用担心。我敢肯定我做得更糟!

标签: c# datagridview


【解决方案1】:

您可能正在尝试将字符串值强制转换为 int,但这是行不通的。而是使用.ToString() 转换它。

试试这个:

Int32 value = Int32.Parse(binaryGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());

【讨论】:

  • 谢谢。我接受了你的回答。不过,实际上,您不需要使用 Parse() 而不仅仅是将其分配给 Int32 值吗?
  • 是的 - 我不知道我在想什么!我会进行更正,感谢您提醒我注意它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2018-09-21
  • 2014-07-13
相关资源
最近更新 更多