我有一个网络服务,使用几个网络方法填充我的DataGridView
。
如果没有这个代码,一切都很好但我需要根据所选行更改图片,图片名称将放在一个不会改变的静态列中。
我想要做的是,在我的网络方法中,发送一个等于picture1.jpg
的图片名称。
在Windows应用程序中,我正在使用此代码:
int i;
i = memdataGV.SelectedCells[0].RowIndex;
var pictext = memdataGV.Rows[i].Cells[5].Value.ToString();
pictureBox1.ImageLocation = "C:\\Pictures\\" + pictext;
当DataGridView
首先填充一切正常时,但是当我点击其中一个按钮事件时,它会在以下行引发异常:
var pictext = memdataGV.Rows[i].Cells[5].Value.ToString();
NullReferenceException未处理
我尝试调试代码,然后将if
语句添加到顶部但是似乎没有修复它。
答案 0 :(得分:2)
三种可能性:
i
的值不正确(例如,-1)Value
为NULL
,因此当您致电ToString()
时会爆炸。Cells[5]
不存在。 I.E.也许它是另一个索引,例如4。记住,索引是从零开始的。 根据您的评论,将您的行更改为:
var pictext = memdataGV.Rows[i].Cells[5].Value==null?string.empty:memdataGV.Rows[i].Cells[5].Value.ToString();
答案 1 :(得分:-1)
由于某种原因计算出索引5返回null并且单元格中有一个值。所以我做了代码来通过找到值并且正在工作的列名来获取值
string pictext = Convert.ToString(selectedRow.Cells["PHOTOID"].Value)