DataGridView中CellLeave事件触发时,无法得到该单元格的值

时间:2021-11-10 19:28:15

private void dataGridView2_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            //此代码报错:未将对象引用设置到对象的实例。
            MessageBox.Show(this.dataGridView2.Rows[e.RowIndex].Cells[0].Value.ToString());
        }

不知何因。
为什么去单元格失去焦点,无法获得单元格内的值
以上代码在button事件里,是可以的
button_click
{
 MessageBox.Show(this.dataGridView2.Rows[0].Cells[0].Value.ToString());//可以
}

8 个解决方案

#1


            MessageBox.Show(this.dataGridView2[0, e.RowIndex].Value.ToString());

改成上面的试试

#2


this.dataGridView1.EndEdit();
            if(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value!=null)
            MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());

#3


引用 1 楼 libinguest 的回复:
C# code            MessageBox.Show(this.dataGridView2[0, e.RowIndex].Value.ToString());
改成上面的试试

谢谢回复,试过,还是报:未将对象引用设置到对象的实例。

#4


那是因为有null了.


你试着提取其它的例,看看

#5


楼上说得对,修改前要完成修改状态。this.dataGridView2.EndEdit(); 

#6


好像也是个datagridview的bug吧,在修改完后,关闭要离开那个单元格才能获取到单元格里的值的.

#7


引用 2 楼 h_w_king 的回复:
this.dataGridView1.EndEdit();
            if(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value!=null)
            MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());

贵兄的方法试过了,可以解决问题。谢谢。

#8


之所以报错是因为this.dataGridView2.Rows[e.RowIndex].Cells[0].Value肯能为NULL,此时再TOString()的时候就报错了哦
所以之前需要判断是否为NULL
 至于修改前要完成修改状态。this.dataGridView2.EndEdit()
学习学习

#1


            MessageBox.Show(this.dataGridView2[0, e.RowIndex].Value.ToString());

改成上面的试试

#2


this.dataGridView1.EndEdit();
            if(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value!=null)
            MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());

#3


引用 1 楼 libinguest 的回复:
C# code            MessageBox.Show(this.dataGridView2[0, e.RowIndex].Value.ToString());
改成上面的试试

谢谢回复,试过,还是报:未将对象引用设置到对象的实例。

#4


那是因为有null了.


你试着提取其它的例,看看

#5


楼上说得对,修改前要完成修改状态。this.dataGridView2.EndEdit(); 

#6


好像也是个datagridview的bug吧,在修改完后,关闭要离开那个单元格才能获取到单元格里的值的.

#7


引用 2 楼 h_w_king 的回复:
this.dataGridView1.EndEdit();
            if(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value!=null)
            MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());

贵兄的方法试过了,可以解决问题。谢谢。

#8


之所以报错是因为this.dataGridView2.Rows[e.RowIndex].Cells[0].Value肯能为NULL,此时再TOString()的时候就报错了哦
所以之前需要判断是否为NULL
 至于修改前要完成修改状态。this.dataGridView2.EndEdit()
学习学习