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