从子对象调用表单

时间:2016-03-29 20:49:46

标签: c# winforms

我试图从子类文件中以我的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中的函数?

1 个答案:

答案 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
}