错误消息修复

时间:2012-10-08 15:33:20

标签: c# datagridview

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    //bool sleected = false;

    if (dataGridView1.Rows[i].Cells[3].Value != null)
    {

        selected.Add(i);
    }

}
//string donew = "";


// line off error 
textBox1.Text = ((String)dataGridView1.Rows[1].Cells[2].Value);
/*  for (int i = 0; i < selected.Count; i++)
{

    textAdded.Add((String)dataGridView1.Rows[0].Cells[2].Value);
 //   donew += (String)dataGridView1.Rows[selected[i]].Cells[2].Value;
}*/

我一直收到错误

  

无法将'System.Double'类型的对象强制转换为'System.String'

我能做些什么来克服这个问题?

3 个答案:

答案 0 :(得分:4)

而不是使用

textBox1.Text = ((String)dataGridView1.Rows[1].Cells[2].Value);

使用

textBox1.Text = dataGridView1.Rows[1].Cells[2].Value.ToString();

原因是你尝试显式转换而不存在从double到string的转换,但幸运的是ToString()方法将数字输出为字符串。

答案 1 :(得分:1)

此外,您可以使用foreach循环进一步优化和清理它。这使得在许多情况下更容易阅读。

此外,作为一般做法,请避免使用这些对象的textBox1dataGridView1类型名称。现在应用特定的命名模式,防止不必要的悲伤和后来的担心。尽可能早地进入是个好习惯。

foreach(DataGridViewRow r in dataGridView1.Rows)
{
    if (r.Cells[3].Value != null)
    {
        selected.Add(r);
    }
}
// line off error 
textBox1.Text = dataGridView1.Rows[1].Cells[2].Value.ToString();

答案 2 :(得分:0)

您可以尝试使用

dataGridView1.Rows[1].Cells[2].Value.ToString()