使用String和Integer C#的按钮数组

时间:2016-01-14 06:56:19

标签: c# arrays

我想创建包含stringinteger的按钮数组。我有30 buttons并命名为B1, B2, ...., B30,我想根据计数器值更改颜色。我怎样才能做到这一点?这些是我所做的,我坚持了

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

5 个答案:

答案 0 :(得分:1)

我建议使用 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();

答案 1 :(得分:1)

Control中的Form(自定义)初始化(在您的情况下,ControlButton)需要更多而不是简单的声明。除了给出名字(你做的),另外两件重要的事情是:

  1. 将其添加到Control
  2. 很好地找到它
  3. 因此,将这些注意事项添加到您要创建的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

答案 2 :(得分:0)

我是这样的意思:

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

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

答案 3 :(得分:0)

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

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

尝试这样的事情,based on a modified version of the code from this previous answer创建按钮,将它们添加到您可以搜索的列表中,并设置按钮的位置:

        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;

答案 4 :(得分:0)

您必须先初始化按钮数组

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