C# C中的System.NullReferenceException错误#

C# C中的System.NullReferenceException错误#,c#,oop,C#,Oop,对于学校来说,我们试图在windows窗体应用程序中绘制一辆汽车,它需要是OOP。表单中有4个按钮,一个用来画圆,一个用来画正方形,一个用来画整个汽车,还有一个用来让汽车行驶。我们制作了一个汽车类,它由两个圆圈和一个正方形组成,这个正方形应该是汽车的形状。当我们在car类中实例化一个新的圆时,我们得到一个System.NullReferenceException错误。我们如何解决这个问题?按钮3是创建汽车类。这是我们的代码: 这是我们的表格: namespace Maissan_Autootje

对于学校来说,我们试图在windows窗体应用程序中绘制一辆汽车,它需要是OOP。表单中有4个按钮,一个用来画圆,一个用来画正方形,一个用来画整个汽车,还有一个用来让汽车行驶。我们制作了一个汽车类,它由两个圆圈和一个正方形组成,这个正方形应该是汽车的形状。当我们在car类中实例化一个新的圆时,我们得到一个System.NullReferenceException错误。我们如何解决这个问题?按钮3是创建汽车类。这是我们的代码:

这是我们的表格:

namespace Maissan_Autootje_V1
{
    public partial class Form1 : Form
    {
        Graphics g;
        public Form1()
        {
            InitializeComponent();
            g = this.CreateGraphics();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Refresh();
            Square square = new Square(150, 200, 150, 100);
            square.Draw(g);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Refresh();
            Circle circle = new Circle(100, 250, 100, 100);
            Circle circle2 = new Circle(280, 250, 100, 100);
            circle.Draw(g);
            circle2.Draw(g);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Auto auto = new Auto();
        }

        private void button4_Click(object sender, EventArgs e)
        {

        }

    }
}
这是我们的圆圈(正方形与圆圈类几乎相同):

这应该是绘制汽车的类:

namespace Maissan_Autootje_V1
{
    class Auto : Form1
    {
        Graphics g;

        public Auto()
        {


            Circle circle = new Circle(100, 250, 100, 100);
            Circle circle2 = new Circle(280, 250, 100, 100);
            Square square = new Square(150, 200, 150, 100);
            circle.Draw(g);
            circle2.Draw(g);
            square.Draw(g);
        }
    }
}

提前谢谢

您需要为Auto提供图形对象的实例

Graphics g == null
所以。。例如:

class Auto
{
    public Auto(Graphics g)
    {
        Circle circle = new Circle(100, 250, 100, 100);
        Circle circle2 = new Circle(280, 250, 100, 100);
        Square square = new Square(150, 200, 150, 100);
        circle.Draw(g);
        circle2.Draw(g);
        square.Draw(g);
    }
}

g
为空,您需要将其设置为试图绘制到的图形窗格。。更妙的是,把车放到表格里
class Auto
{
    public Auto(Graphics g)
    {
        Circle circle = new Circle(100, 250, 100, 100);
        Circle circle2 = new Circle(280, 250, 100, 100);
        Square square = new Square(150, 200, 150, 100);
        circle.Draw(g);
        circle2.Draw(g);
        square.Draw(g);
    }
}