2015-07-20 98 views
0

现在我真的很困惑。在类和表之间传递int值

我有持有大阵

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

我也得到了含法“画”一类的一个WinForm。 绘制方法现在需要获取表单中数组中位置的值。我试着做以下事情:

在我的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

它需要一个'InGame'的实例,你试图从类定义中调用它(静态地) – Sayse

+0

'mapAtPositionXY'或'mapContentAtXY'? – paul

+0

'Ingame.mapContentAtXY(myPoint)' - >'this.mapContentAtXY(myPoint)' –

回答

0

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

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

myInt = this.mapContentAtXY(myPoint); 

否则使用表单实例

myInt = frmInGameInstance.mapContentAtXY(myPoint); 
+0

我没有在我的表单实例中调用它。正如我所说,我正在用绘图方法从课堂上调用它。 – Joey

+0

然后使用表单实例。如果你没有,创建一个: 'new Ingame()。mapContentAtXY(myPoint);' –

0

您将需要使用this当您创建或致电抽奖类的该实例的形式的实例传递到拉伸类。然后您可以通过该表单实例访问该方法。

OR

商店map不在形式,而是在画类。将mapContentAtXY方法移动到绘图类。在表单中使用绘图类的一个实例来更新该地图。