DataGridView 空引用异常

发布于 2024-12-12 01:34:08 字数 681 浏览 0 评论 0原文

我有一个 Web 服务,它使用几个 Web 方法填充我的 DataGridView

如果没有此代码,一切都会很好,但我需要根据所选的行来更改图片,并且图片的名称将位于不会更改的静态列中。

我想做的是,在我的 webmethod 中,向其发送一个等于 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 语句添加到顶部,但似乎没有修复它。

I have a webservice which populates my DataGridView using a couple of webmethods.

Without this code everything works great but I need the picture to change depending on the row selected and the name of the picture will be in a static column that will not change.

What I am trying to do is, in my webmethod, send it a picture name equal to picture1.jpg.

In the windows application I am using this code:

int i;
i = memdataGV.SelectedCells[0].RowIndex;
var pictext = memdataGV.Rows[i].Cells[5].Value.ToString();
pictureBox1.ImageLocation = "C:\\Pictures\\" + pictext;

When the DataGridView first populates everything works fine but when I click on one of my button events it throws an exception on the following line:

var pictext = memdataGV.Rows[i].Cells[5].Value.ToString();

NullReferenceException was unhandled

I tried to debug the code and I added the if statement to the top however does not seem to fix it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无法回应 2024-12-19 01:34:08

三种可能性:

  1. i 的值不正确(例如 -1)
  2. Cells[5] 处的 ValueNULL,因此当您调用 ToString() 爆炸了。
  3. Cells[5] 不存在。 IE 可能是另一个索引,例如 4。请记住,该索引是从零开始的。

根据您的评论,将行更改为:

var pictext = memdataGV.Rows[i].Cells[5].Value==null?string.empty:memdataGV.Rows[i].Cells[5].V‌​alue.ToString();

Three possibilities:

  1. i has an incorrect value (-1, for example)
  2. Value at Cells[5] is NULL so when you call ToString() blows up.
  3. Cells[5] does not exist. I.E. maybe it's another index, like 4, for example. The index is zero-based, remember.

Based on your comment, change your line to:

var pictext = memdataGV.Rows[i].Cells[5].Value==null?string.empty:memdataGV.Rows[i].Cells[5].V‌​alue.ToString();
茶色山野 2024-12-19 01:34:08

发现由于某种原因索引 5 返回 null 并且单元格中有一个值。所以我编写了代码来通过列名获取值,该列名找到了该值并且正在工作

 string pictext = Convert.ToString(selectedRow.Cells["PHOTOID"].Value)

Figured it out for some reason the index 5 was returning null and there was a value in the cell. So I did code to grab the value by the column name which found the value and is working

 string pictext = Convert.ToString(selectedRow.Cells["PHOTOID"].Value)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文