C# 非静态字段、方法或属性需要对象引用-请再说一遍

C# 非静态字段、方法或属性需要对象引用-请再说一遍,c#,C#,我是C语言的新手。尝试从内部类调用方法并获得:非静态字段、方法或属性需要对象引用。panel1似乎有问题。大小=new System.Drawing.Size100100 在使用任何面向对象语言之前。您首先需要完全理解OOP的概念。任何类的静态方法都是使用该类的静态属性的方法。静态属性/方法是那些在类的所有实例中值相同的属性。在类的静态函数中使用非静态属性/方法在逻辑上是不正确的 感谢该函数是静态的,但您试图引用一个实例变量。请从:static void resizepanel开始删除stati

我是C语言的新手。尝试从内部类调用方法并获得:非静态字段、方法或属性需要对象引用。panel1似乎有问题。大小=new System.Drawing.Size100100


在使用任何面向对象语言之前。您首先需要完全理解OOP的概念。任何类的静态方法都是使用该类的静态属性的方法。静态属性/方法是那些在类的所有实例中值相同的属性。在类的静态函数中使用非静态属性/方法在逻辑上是不正确的


感谢

该函数是静态的,但您试图引用一个实例变量。请从:static void resizepanel开始删除static,原因如下:我确实删除了“static”,但现在我得到了:无法通过嵌套类型“MainForm.SomeClass”访问外部类型“MainForm”的非静态成员。
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
public class MainForm : Form
{
    public class SomeClass : PictureBox
    {
        public SomeClass()
        {
            this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.mouseDown);
        }
        public void mouseDown(object sender, MouseEventArgs e)
        {
            resizePanel();
        }
    }

    Panel panel1 = new Panel();
    SomeClass someObject = new SomeClass();

    public MainForm()
    {   
        this.Controls.Add(this.panel1);
        this.panel1.Size = new System.Drawing.Size(200, 200);
        this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.draw);
        this.panel1.Controls.Add(this.someObject);
        this.someObject.Location = new System.Drawing.Point(0, 0);
    }

    static void resizePanel() {
      panel1.Size = new System.Drawing.Size(100, 100);
    }

    public void draw(object sender, PaintEventArgs e)
    {
        e.Graphics.FillRectangle(Brushes.Red, 0, 0, 200, 200);
    }

    public static void Main()
    {
        Application.Run(new MainForm());    
    }
}