我无法为我的标签设置新行

时间:2014-03-17 08:13:27

标签: c#

我无法为我的标签设置换行符。我的标签grid.Text只显示第一个字符,就是这样。我已经设置了autosize == false,但它没有做任何事情。我一直在检查我的代码一段时间,并没有看到任何错误。我甚至设置了一个临时变量来获取DrawMaze函数返回的值,它似乎对我来说很好。但是,当我将其分配给标签grid.Text时,它不会获得新行。 System.Environment.NewLine不适用于Windows 7平台吗?我正在使用Visual Studio 2010运行Windows 7。

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);
  }

3 个答案:

答案 0 :(得分:2)

标签不是多行文字的正确控件。您应该使用textbox代替。它允许自动包装您的文本,如果需要,您可以使用Environment.NewLine - 常量。

答案 1 :(得分:2)

DrawMaze()中,如果你在返回之前设置断点来检查mazeString的内容,你会发现它填充了空字符,即'\0',如下所示:< / p>

X\0\0\0\0\0\0\0\0X\r\nX\0\0\0\0\0\0\0\0X\r\n...

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

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

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';

答案 2 :(得分:0)

尝试使用此行:

mazeString += "\n";

而不是这一个:

mazeString += System.Environment.NewLine;