我试图从子类文件中以我的Windows窗体应用程序的形式访问某个函数,并且它给出了错误
'非静态方法,字段或属性需要对象引用' Form1.UpdateCube()''
我从类Cube.cs调用它,调用如下:
public void UpdateCube()
{
if (BTL.BackColor != mapColor(c1.B.TR))
{
BTL.BackColor = mapColor(c1.B.TR);
System.Console.Write("Mapping");
}
//And so on
}
这是Form1.cs中的UpdateCube函数:
private ContactData data;
那为什么我不能访问Form1中的函数?
答案 0 :(得分:0)
正如错误消息所示,您只能在类的实例上调用实例方法,而不能在类型本身上调用实例方法。因此,您需要Form1
的实例来呼叫UpdateCube
。
最简单的解决方案可能是在创建子类时传递当前实例,如下所示:
public class SomeClass
{
private readonly Form1 parent;
public SomeClass(Form1 form)
{
this.parent = form;
}
public void DoStuff()
{
this.parent.UpdateCube()
}
}
public partial class Form1
{
private SomeClass CreateChild()
{
return new SomeClass(this);
}
public void UpdateCube()
{
if (BTL.BackColor != mapColor(c1.B.TR))
{
BTL.BackColor = mapColor(c1.B.TR);
System.Console.Write("Mapping");
}
//And so on
}
// The rest of the class
}