2015-07-20 59 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方法移動到繪圖類。在表單中使用繪圖類的一個實例來更新該地圖。