在类和表单之间传递int值

时间:2015-07-20 11:08:33

标签: c#

我现在真的很困惑。

我有一个拥有大型数组的WinForm

int[,] map = new int[1000, 1000];

我还有一个包含方法“Draw”的类。 draw方法现在需要获取表单中数组中位置的值。我尝试做以下事情:

在我的Form类中,我添加了

public int mapContentAtXY(Point mapPosition)
    {
        return map[mapPosition.X, mapPosition.Y];
    }

现在,如果我尝试执行

myInt = Ingame.mapContentAtXY(myPoint);
//Note: Ingame is the name of my Form

它说

Error   2   'Neu.Ingame' does not contain a definition for 'mapAtPositionXY'

这真令人困惑,我刚刚添加了这个定义,它也被设置为公开。那么为什么地狱不起作用?

2 个答案:

答案 0 :(得分:0)

您的方法mapContentAtXY是一种实例方法。

如果您是从表单实例中调用它,请将Ingame更改为this

myInt = this.mapContentAtXY(myPoint);

否则使用表单实例

myInt = frmInGameInstance.mapContentAtXY(myPoint);

答案 1 :(得分:0)

在创建或调用draw-class的实例时,需要使用this将Form的实例传递给draw-class。然后,您可以通过该表单实例访问该方法。

不要将map存储在表单中,而是存储在该绘图类中。将mapContentAtXY方法移动到draw-class。使用表单中draw-class的一个实例来更新该映射。