2010-01-23 41 views
1

很難理解類以及爲什麼我無法訪問某個對象。 如何修改代碼,以便在所有類/事件中更改「地圖」(這是一組標籤)屬性?C#在公共類中從表單按鈕單擊更改標籤創建

的方法Draw2D的()創建一對夫婦,我希望改變在不同的事件(按一下按鈕在這個例子中)在主窗體上的標籤。

有人可以幫助我,或只是暗示我走向正確的方向。

驗證碼:

公共部分Form1類:表格

{ 
    public void Draw2d() 
    { 
     const int spacing = 20; 
     Label[][] map = new Label[5][]; 
     for (int x = 0; x < 5; x++) 
     { 
      map[x] = new Label[5]; 
      for (int y = 0; y < 5; y++) 
      { 
       map[x][y] = new Label(); 
       map[x][y].AutoSize = true; 
       map[x][y].Location = new System.Drawing.Point(x * spacing, y * spacing); 
       map[x][y].Name = "map" + x.ToString() + "," + y.ToString(); 
       map[x][y].Size = new System.Drawing.Size(spacing, spacing); 
       map[x][y].TabIndex = 0; 
       map[x][y].Text = "0"; 
      } 
      this.Controls.AddRange(map[x]); 
     } 
    } 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public void Form1_Load(object sender, EventArgs e) 
    { 
     Draw2d(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     map[0][0].Text = "1";    //  <-- Doesn't work 
    } 


} 

謝謝!

+0

當你說它不起作用時會發生什麼? – Spence 2010-01-23 23:12:07

+0

您可以創建一個新的按鈕,它讀取地圖[0] [0]屬性並將其放在消息框中。您可以看到該屬性是否被覆蓋或者是否顯示不正確? – Spence 2010-01-23 23:12:54

回答

1

我猜測是你添加了

public Label[][] map; 

卻忘了在Draw2D的第二線從

Label[][] map = new Label[5][]; 

改變

map = new Label[5][]; 

我只是想你的代碼,如果你改變這兩條線正常工作。如果這不是問題,請說明你得到了什麼錯誤?

+0

馬特:謝謝,它的工作。這是我的錯誤。再次感謝!你救了我很多麻煩:) – Qrew 2010-01-23 23:32:22

2

必須聲明地圖物業(全球爲class)

public partial class Form1 : Form { 
    public Label[][] map; 
    .... 
} 

,那麼你可以在裏面類使用像

this->map[...][...] 

或從外面像

objClass->map[...][...] 
+0

公共標籤爲Visual Studio做了訣竅,但我仍然無法弄清楚如何訪問變量數組map [] []。 map [1] [1] .Text =「1」;編譯但不工作。 objClass-> map [] []?我不明白, – Qrew 2010-01-23 23:09:14