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

时间:2011-08-13 20:33:43

标签: c# user-controls nullpointerexception

当我将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#中的“表单设计器”中,并将其命名为_pb 以上工作。是否还有以编程方式添加控件的其他步骤?不仅仅是调用Form.Controls.Add(/ 某些控件 /)???

1 个答案:

答案 0 :(得分:1)

真的只是一种预感,需要看到完整的课程,而不仅仅是片断。但有一个好奇心是你有:

formMain.Controls.Add

在formMain的构造函数中,其中是变量formMain定义(假设编译)。你不是说:

this.Controls.Add(_pb)

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