每当我按下表格中DataGridView
的空行时,我的程序就会停止。错误说:
InvalidCastException未处理。
这是发生错误的代码的一部分:
private void dataGridView1_Click(object sender, EventArgs e)
{
id = Convert.ToInt32(dataGridView1.SelectedCells[0].Value); //This is the line with the error
textBox1.Text = dataGridView1.SelectedCells[1].Value.ToString();
textBox2.Text = dataGridView1.SelectedCells[2].Value.ToString();
textBox3.Text = dataGridView1.SelectedCells[3].Value.ToString();
textBox4.Text = dataGridView1.SelectedCells[4].Value.ToString();
}
答案 0 :(得分:0)
第一个网格单元的数据类型是什么?
您尝试转换的变量是非数字或某些特殊字符数据类型,这就是它导致错误的原因。如果您想使用非数字或非数字和数字数据的组合,我建议您使用convert.toString()
方法。
答案 1 :(得分:0)
正如你刚刚说的那样:
每当我按空行时程序停止
然后你已经
了id = Convert.ToInt32(dataGridView1.SelectedCells[0].Value); //This is the line with the error
它始终会失败,因为Int
是值类型且不能为空,并且当您有空行时,此单元格上的值很可能是null
。
尝试这样的事情:
try
{
id = Convert.ToInt32(dataGridView1.SelectedCells[0].Value); //This is the line with the error
textBox1.Text = dataGridView1.SelectedCells[1].Value.ToString();
textBox2.Text = dataGridView1.SelectedCells[2].Value.ToString();
textBox3.Text = dataGridView1.SelectedCells[3].Value.ToString();
textBox4.Text = dataGridView1.SelectedCells[4].Value.ToString();
}
catch(InvalidCastException exception)
{
// not much to do with it, you can display assign empty valuest to your text boxes or notify user that there's nothing to select
}
备用apporach可能会检查单元格是否有价值。
if(string.IsNullOrWhiteSpace(dataGridView1.SelectedCells[0].Value))
{
return;
}
id = Convert.ToInt32(dataGridView1.SelectedCells[0].Value);
//Assign values to textboxes
还有另一种可能性:
int id;
if(int.TryParse( dataGridView1.SelectedCells[0].Value.ToString(), out id ))
{
//Assign values to textboxes
}