如何将按钮放置在 2D 按钮数组的右侧?

问题描述 投票:0回答:1

我是 C# 初学者,正在尝试制作一款扫雷游戏。到目前为止,我已经取得了很大的进展,但我遗漏了一些细节。我正在二维数组中制作按钮网格。

以下是按钮数组的代码:

            btnArray = new Button[rows, cols];
            for (int i = 0; i < rows; i++)
            {
              for (int j = 0; j < cols; j++)
                {    
                    btnArray[i, j] = new Button();

                    btnArray[i, j].Width = 40;
                    btnArray[i, j].Height = 40;
                    btnArray[i, j].Margin = new (0);

                    btnArray[i, j].Left = xPos;
                    btnArray[i, j].Top = yPos;
                    btnArray[i, j].BackColor = Color.Gray;
                    btnArray[i, j].MouseDown += btnArray_MouseDown;
                    
                    hasbomb = bombeListe[o];
                    if (hasbomb)
                    {
                        plassertBomber++;
                    }
                    btnArray[i, j].Tag = new Cell(i, j, hasbomb, false);

                    _buttonForm.Controls.Add(btnArray[i, j]);
                    xPos += btnArray[i, j].Width;
                    if (m == cols)
                    {
                        xPos = 0;
                        yPos += btnArray[i, j].Width;
                        m = 0;
                    }
                    m++;
                    o++;
                }
            }

我想要做的是在网格右侧添加一个暂停按钮,比如说顶部/右侧。问题是我有 3 种不同的难度(简单、中等、困难)和一个自定义,玩家可以选择网格的大小,当我在它们之间更改时,暂停按钮会改变位置。

(看图片) Easy mode Custom mode

以下是暂停按钮的代码:

      public void Generate_buttons()
      {
          Button pause = new();
          int xpos = (btnArray.GetLength(0) * 42);

          pause.BackColor = Color.YellowGreen;

          //int pos = (btnArray[btnArray.GetLength(0), 0].Location.X);
          pause.Text = ("Pause");
          pause.Width = 130;
          pause.Height = 40;
          pause.AutoSize = true;
          pause.UseCompatibleTextRendering = true;
          pause.Margin = new(0);
          pause.Left = xpos;

          _buttonForm.Controls.Add(pause);
      }

感谢我能得到的所有帮助:)顺便说一句,我是初学者,所以我知道我的代码可能不是那么好,但我会很感激任何提示!:D

(我也是堆栈溢出的新手,所以如果我现在需要一些提问技巧,我希望获得我能得到的所有帮助。顺便说一句,问题中只能有两张图片吗?) 谢谢!

c# forms button grid
1个回答
0
投票

首先,我认为你这里有一个错误:

yPos += btnArray[i, j].Width;
:大概应该是
yPos += btnArray[i, j].Height;

我认为你应该使用 int

xpos = (btnArray.GetLength(1) * 40);

无论如何,单元格大小应声明为常量,以便在声明单元格和按钮时不必使用固定数字。

© www.soinside.com 2019 - 2024. All rights reserved.