Invalidate()在编程添加的控件上导致NULL POINTER异常(c#)

本文关键字:NULL POINTER 异常 控件 编程 添加 Invalidate | 更新日期: 2023-09-27 18:05:36

当我像这样添加一个PictureBox到我的表单时:

public partial class frmMain : Form
{
    PictureBox _pb;
    public formMain(){
    _pb = new PictureBox();
    formMain.Controls.Add(_pb);
    }
    //SOME METHOD
    private void SomeMethod(){
        _pb.Invalidate();  //NULL POINTER EXCEPTION
    }
}

这是怎么回事?是否还需要向窗体添加控件?

更多信息:

如果我把一个图片框拖到visual studio c#的form designer中,并命名为_pb.
以上是可行的。以编程方式添加控件还有其他步骤吗?不仅仅是调用form。controls。添加(/一些控件/) ??

Invalidate()在编程添加的控件上导致NULL POINTER异常(c#)

真的只是一种预感,需要看到整个类,而不仅仅是它的一部分。但有一个奇怪的是,你有:

formMain.Controls。添加

在formMain的构造函数中,其中定义了变量formMain(假设它可以编译)。你的意思是:

this.Controls.Add (_pb)

不确定这是否是问题,我怀疑问题还可能是_pb在调用invalidate时没有定义。还有其他没有初始化_pb的构造函数吗?