2013-10-23 60 views
-1

美好的一天。我有一個Form1和兩個課程。當我想要在其中一個類中使用label1時,它會顯示錯誤名稱label1在當前上下文中不存在。如何在類中使用label1來顯示文本?呼叫Form1的組件(標籤)類

namespace snake_game 
{ 

    public class had 
    { 

     private Rectangle[] snakeRec; 
     private SolidBrush brush; 
     private int x, y, width, height; 
     public Rectangle[] SnakeRec 

     { 
      get { return snakeRec; } 

     } 

     public had() 
     { 
      snakeRec = new Rectangle[3]; 
      brush = new SolidBrush(Color.Black); 


      x = 20; 
      y = 0; 
      width = 10; 
      height = 10; 
      for (int i = 0; i < snakeRec.Length; i++) 
      { 
       snakeRec[i] = new Rectangle(x, y, width, height); 
       x -= 10; 
      } 
} 

     ................................................... 

............................................ ...................................

 public void drawSnake() 
     { 
      for (int i = snakeRec.Length - 1; i > 0; i--) 
      { 
       snakeRec[i] = snakeRec[i - 1]; 


       for (int j = 1; j < snakeRec.Length; j++) 

        if (snakeRec[i].X == snakeRec[j].X && snakeRec[i].Y == snakeRec[j].Y) 
        { 
         label1.Text = "------"; //here is problem// 
        } 
      } 
     } 
+0

太多的代碼。請將它降低到需要的水平。 –

回答

0

你不能,因爲你不能我不想那樣做。
你有一個類had,這是一個Model類。你不想讓你的模型調用你的視圖(標籤)。

您是否希望MVC模式建立自己的軟件,因爲這是很好的。這是控制器(Form 1代碼後面),這將打電話給你的模型(had)用於更新視圖(Form1中)的標籤。

例如:

public class had 
{ 
    public void moveDown() 
    { 
     snakeRec[0].Y += 10; 
    }  
} 

public class Form1 : Form 
{ 
    private had _model; 

    public void moveDown() 
    { 
     _model.MoveDown(); 
     this.drawSnake(); 
    }  
    public void drawSnake() 
    { 
     for (int i = this._model.snakeRec.Length - 1; i > 0; i--) 
     { 
      .... 
      label1.Text = "------"; 
      .... 
     } 
    } 
} 
+0

感謝您的回覆。我想防止與蛇體發生碰撞。我嘗試這樣的for(int i = snakes.SnakeRec.Length - 1; i> 0;我 - ) { snakes.SnakeRec [I] = snakes.SnakeRec [I - 1]; 對(INT J = 1;Ĵ user2097021