使用字符串和整数 C# 的按钮数组

本文关键字:按钮 数组 整数 字符串 | 更新日期: 2023-09-27 18:30:31

我想制作包含stringinteger的按钮数组。我有30 buttons并命名为B1, B2, ...., B30,我想根据计数器值更改它们的颜色。我该怎么做?这些是我所做的,我坚持了下来

for(Cnt = 0; cnt < 30; cnt++)
{
   Button[] Tombol = new Button[]{"B"+(cnt+1)};  
   Tombol[cnt].BackColor = Color.Red
}

使用字符串和整数 C# 的按钮数组

Form中的Control(自定义)初始化(在您的情况下,ControlButton)需要的不仅仅是一个简单的声明。除了命名(你这样做)之外,还有两件重要的事情要做:

  1. 将其添加到Control父级
  2. 为了很好地定位它

因此,将这些注意事项添加到您要创建Button中,您可以执行以下操作

int noOfBtns = 30;
Button[] Tombols = new Button[30]; //actually, you may not need this at all
for (int cnt = 0; cnt < numOfBtns; cnt++)
{
    Button tombol = new Button();
    tombol.BackColor = Color.Red;
    tombol.Location = new Point(5, cnt * 25); //Read (2) please formulate this more properly in your case
    tombol.Name = "B" + (cnt + 1).ToString(); 
    // others like size (maybe important depending on your need), color, etc
    this.Controls.Add(tombol); //Read (1) this refers to the `Form` if the parent control you want to put your button to is `Form`. But change the `this` as you see fit
    Tombols[cnt] = tombol; //again, actually you may not need this at all
}

注意如何制定按钮的位置,非常重要。我上面给出的例子非常简单,如果你的按钮数量变大,它可能不适合。但这可以让您基本了解正确设置Button位置的重要性

您可能根本不需要Button数组,除非出于某种原因您想要列出它。但即使你想列出它,你也应该使用 ListList.Add 而不是 Array .

我建议使用 Linq生成数组:

Button[] Tombol = Enumerable
  .Range(0, 30)
  .Select(i => new Button() {
    Text = String.Format("B{0}", i + 1),
    BackColor = Color.Red, 
    //TODO: compute desired color as function of "i" like
    // BackColor = Color.FromArgb(i * 8, 255 - i * 8, 128),
    //TODO: assign Parent, Location, Size etc. like this:
    // Parent = this,
    // Location = new Point(10 + 40 * i, 10),
    // Size = new Size(35, 20),
  })
  .ToArray();

我的意思是这样的:

Button[] Tombol = new Button[30];
for(cnt = 0; cnt < 30; cnt++)
{
    Tombol[cnt] = new Button
        {
            Text = "B" + (cnt+1),
            BackColor = Color.Red
        };
}

首先,创建数组,并在 for 循环中逐个实例化实际按钮。

您必须先初始化按钮数组

int numOfBtns = 30;
Button[] Tombol = new Button[numOfBtns];

之后您可以填写所需项目

for (int cnt = 0; cnt < numOfBtns; cnt++)
{
    // Name, Content, Foreground .. whatever
    Tombol[cnt].Name = "B" + (cnt + 1);
}
目前,

您正在代码的每个循环上重新创建数组,而不是在循环外部创建数组,然后在循环中添加按钮。

此外,您的所有按钮都是在相同的位置创建的,因此它们彼此重叠,这意味着您只能看到其中一个。

尝试这样的事情,基于上一个答案中代码的修改版本,该版本创建按钮,将它们添加到您可以搜索的列表中,并设置按钮的位置:

        int top = 50;
        int left = 100;
        var buttons = new Dictionary<string, Button>();
        for (int i = 0; i < 30; i++)
        {
            Button button = new Button();
            buttons.Add("B"+i, button);
            button.Left = left;
            button.Top = top;
            this.Controls.Add(button);
            top += button.Height + 2;
            button.BackColor = Color.Red;
        }

然后,您可以稍后使用代码引用单个按钮:

buttons["B3"].BackColor= Color.Green;