【问题标题】:Call Form1 component (label) in class在类中调用 Form1 组件(标签)
【发布时间】:2013-11-01 18:49:35
【问题描述】:

美好的一天。我有一个 Form1 和两个类的程序。当我想在其中一个 Class 中使用 label1 时,它会显示错误名称 label1 在当前上下文中不存在。我如何在 Class 中使用 label1 来显示文本?

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//
                   }
           }
       }

【问题讨论】:

  • 代码太多。请减少到需要的程度。

标签: c# forms class label call


【解决方案1】:

你不能,因为你不想那样做。
你有一个类had,它是一个模型类。您不希望您的模型调用您的视图(标签)。

您想使用MVC 模式构建您的软件,因为它很好。这是控制器(Form1 后面的代码),它将调用您的模型 (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 = "------"; 
            ....
        }
   }
}

【讨论】:

  • 感谢您的回复。我想防止与蛇体碰撞。我试过这个 (int i = snakes.SnakeRec.Length - 1; i > 0; i--) { snakes.SnakeRec[i] = snakes.SnakeRec[i - 1]; for (int j = 1; j
猜你喜欢
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多