C# 尝试在Telerik Gridview中设置图片时出现空引用错误

C# 尝试在Telerik Gridview中设置图片时出现空引用错误,c#,telerik,telerik-grid,radgridview,C#,Telerik,Telerik Grid,Radgridview,我尝试使用以下代码在telerik gridview中显示图片: foreach (var item in radGridView1.Rows) { try { item.Cells["column1"].CellElement.Text = ""; item.Cells["column1"].CellElement.StretchVertically = true

我尝试使用以下代码在telerik gridview中显示图片:

  foreach (var item in radGridView1.Rows)
        {
            try
            {
                item.Cells["column1"].CellElement.Text = "";
                item.Cells["column1"].CellElement.StretchVertically = true;
                item.Cells["column1"].CellElement.ImageLayout = ImageLayout.Zoom;
                item.Cells["column1"].CellElement.ImageAlignment = ContentAlignment.MiddleCenter;
                item.Cells["column1"].CellElement.Image = Image.FromFile("img/1.jpg");
                pictureBox1.Image = Image.FromFile(item.Cells["Picture"].Value.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
但每当我尝试运行应用程序时,都会收到一条错误消息,抱怨

对象引用未设置为对象的实例


它可能有什么问题

听起来像是在解除对空对象的引用(例如
null.SomeProperty


您应该在收到错误的行上放置一个断点,并查看您正在取消引用的
null
对象。

由于控件中的Telerik虚拟化,例如RadGridView CellElements和RowElements可以为null。因此,为了格式化某些单元格,例如在Telerik RadGridView控件中,我们需要使用“CellFormatting”事件,如下所示:

 private void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e)
        {
            try
            {
                if (e.CellElement.ColumnInfo.HeaderText == "Picture") 
                {
                    e.CellElement.Image = pictureBox1.Image;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

当然,同样的方法也适用于使用RowFormatting事件格式化某些行。

我试过了。没有任何行或单元格是空的。这就是为什么我感到困惑的原因:-/@Hossein-see。我不熟悉Telerik,但由于网格虚拟化,
CellElement
看起来可以是
null
。如果是这样,你应该是空的当你说
.CellElement.Text
时取消对空对象的引用,因为CellElement是空的。Ersonmez:是的,你是对的。由于Telerik虚拟化,它们被设置为空的!我不得不使用CellFormatting\u事件格式化某些单元格。你能看到它来自哪一行吗?也许你可以在
ex.StackTrace
中看到它。例如,如果t位于
try
块的第一行,请检查以下所有内容:
item==null
item.Cells==null
item.Cells[“column1”]==null
item.Cells[“column1”]。CellElement==null