C#表单不会刷新

C#表单不会刷新,c#,winforms,C#,Winforms,我的程序有问题(扫雷游戏) 这是我的板级(地雷板) 图片如下: 8x10 15地雷 5x5 5个地雷 当我设置地雷的数量是5,但它只显示3(1个z字母是1地雷) 你能给我一些解决方案吗,非常感谢 我希望我没有误解这里的问题。但是GetRandomPoints方法不能保证向随机点列表中添加点。如果该点存在,则不会添加该点 我建议这样做: while(randomPoint.Count < numOfMines) { GetRandomPoints(maxrow, maxcol); }

我的程序有问题(扫雷游戏) 这是我的板级(地雷板)

图片如下: 8x10 15地雷

5x5 5个地雷

当我设置地雷的数量是5,但它只显示3(1个z字母是1地雷)
你能给我一些解决方案吗,非常感谢

我希望我没有误解这里的问题。但是GetRandomPoints方法不能保证向随机点列表中添加点。如果该点存在,则不会添加该点

我建议这样做:

while(randomPoint.Count < numOfMines)
{ GetRandomPoints(maxrow, maxcol); }
while(randomPoint.Count
我希望我没有误解这里的问题。但是GetRandomPoints方法不能保证向随机点列表中添加点。如果该点存在,则不会添加该点

我建议这样做:

while(randomPoint.Count < numOfMines)
{ GetRandomPoints(maxrow, maxcol); }
while(randomPoint.Count
当您单击工具条菜单项时,您正在创建一个新板,这将导致旧按钮保留在窗体上(调整窗体大小以查看所有旧按钮)。你会注意到,地雷和以前放在同一个按钮上。这是由于旧按钮停留在新按钮之前造成的。因此,您需要在创建新板之前清除旧板。例如:

public void Clear(Form frm)
{
  for (int i = 0; i < maxrow; ++i)
  {
    for (int j = 0; j < maxcol; ++j)
    {
      frm.Controls.Remove(MinesBoard[i, j].button);
    }
  }
}

一定要修复@AndersJH提到的错误:)

当你点击工具栏菜单项时,你正在创建一个新的板,这将导致旧按钮留在表单上(调整表单大小以查看所有旧按钮)。你会注意到,地雷和以前放在同一个按钮上。这是由于旧按钮停留在新按钮之前造成的。因此,您需要在创建新板之前清除旧板。例如:

public void Clear(Form frm)
{
  for (int i = 0; i < maxrow; ++i)
  {
    for (int j = 0; j < maxcol; ++j)
    {
      frm.Controls.Remove(MinesBoard[i, j].button);
    }
  }
}

一定要修复@AndersJH提到的错误:)

你说的
它没有正确地改变是什么意思
?看起来当大小改变时,“其余的”会被切断。当我将15个地雷改为5个地雷时,它只显示3个地雷(如图所示)@Matten:是的,这是我的序言@那么它应该显示什么呢?如果只显示左上角的5x5方块,这是唯一的东西。
它没有正确更改是什么意思?
?当大小更改时,“其余”看起来会被切断。当我将15个地雷更改为5个地雷时,它只显示3个地雷(如图所示)@Matten:是的,这是我的序言@那么它应该显示什么呢?如果你只显示左上角的5x5正方形,那是唯一的东西。仍然没有变化,我认为问题出在DrawBoard函数中,但我找不到Till没有变化,我认为问题出在DrawBoard函数中,但我找不到
private void optionToolStripMenuItem_Click(object sender, EventArgs e)
{
  if (board != null)
  {
    board.Clear(this);
  }

  board = new Board(5, 5, 5);
  this.Size = new Size(board.Column * 25 + 5, board.Row * 25 + 88);
  board.DrawBoard(this);
}