我不能为我的标签设置新行

本文关键字:设置 新行 标签 我的 不能 | 更新日期: 2023-09-27 17:50:31

我在为我的标签设置新行时遇到了麻烦。我的标签网格。文本只显示第一个字符,仅此而已。我已经设置了autosize == false,但它什么也没做。我已经检查了我的代码一段时间了,没有发现任何问题。我甚至设置了一个临时变量来获取从DrawMaze函数返回的值,它对我来说似乎工作得很好。然而,当我把它分配给标签网格。文本,不会换一行。System.Environment.NewLine在Windows 7平台上不工作吗?我用的是Windows 7和Visual Studio 2010。

MousMaze类:

  // Set up the mouseMaze grid
  public char[,] computeMaze(int width, int height)
  { 
      mouseMaze = new char[height, width];
      // set left n right wall to X
      for (int i = 0; i < height; i++)
      {
          // left
          mouseMaze[i, 0] = 'X';
          // right
          mouseMaze[i, (width - 1)] = 'X';
      }
      return mouseMaze;
  }

Form1.cs

 // Set up the mouseMaze grid
 public string DrawMaze(int width, int height, char[,] m)
 {
      string mazeString = "";
      for (int i = 0; i < height; i++)
      {
           for (int j = 0; j < width; j++)
           {
               mazeString += m[i, j];
           }
           mazeString += System.Environment.NewLine;
      }
      return mazeString;
 }
  private void newMaze_Click(object sender, EventArgs e)
  {
       string temp = "";
       gridWidth = int.Parse(width.Text);
       gridHeight = int.Parse(height.Text);
       game.SetWidth(gridWidth);
       game.SetHeight(gridHeight);
       maze = game.computeMaze(gridWidth, gridHeight);
       grid.Text = DrawMaze(gridWidth, gridHeight, maze);
  }

我不能为我的标签设置新行

DrawMaze()中,如果您在返回之前放置一个断点来检查mazeString的内容,您会发现它被空字符填充,即''0',如下所示:

X'0'0'0'0'0'0'0'0X'r'nX'0'0'0'0'0'0'0'0X'r'n...

这就是为什么你只能看到标签中打印的第一个字符。

要解决这个问题,您可以1)将null字符替换为空格:

string mazeString = DrawMaze(gridWidth, gridHeight, maze);
grid.Text = mazeString.Replace(''0', ' ');

2)或者确保您已经填充了computeMaze():

内数组中的每个字符
// left
mouseMaze[i, 0] = 'X';
// middle
for (int j = 1; j < width - 1; j++)
    mouseMaze[i, j] = ' ';
// right
mouseMaze[i, (width - 1)] = 'X';

标签不是多行文本的正确控件。您应该使用文本框。它允许自动换行你的文本,如果需要,你可以使用Environment.NewLine -常数。

试试这一行:

mazeString += "'n";

代替这个:

mazeString += System.Environment.NewLine;