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

Invalidate()在以编程方式添加的控件(c#)上导致空指针异常,c#,user-controls,nullpointerexception,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();

当我向表单中添加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
    }
}
这是怎么回事?向窗体添加控件是否需要更多

更多信息:

如果我将一个picturebox拖到visual studio C#中的“表单设计器”中,并将其命名为_pb。

以上工作。以编程方式添加控件是否还有其他步骤?不仅仅是调用Form.Controls.Add(/some control/)???

实际上只是一种预感,需要查看整个类,而不仅仅是其中的一部分。但一个好奇的是你有:

formMain.Controls.Add

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

this.Controls.Add(_-pb)


不确定这是否是问题所在,我怀疑问题也可能是_-pb在调用invalidate时没有定义。您是否使用了任何其他未初始化的构造函数?

我不熟悉这一点,但我刚刚在Visual Studio C中创建了一个新的C#窗口应用程序。并将表单命名为“formMain”。我不确定VS在哪里定义表单。