我想创建包含string
和integer
的按钮数组。我有30 buttons
并命名为B1, B2, ...., B30
,我想根据计数器值更改颜色。我怎样才能做到这一点?这些是我所做的,我坚持了
for(Cnt = 0; cnt < 30; cnt++)
{
Button[] Tombol = new Button[]{"B"+(cnt+1)};
Tombol[cnt].BackColor = Color.Red
}
答案 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
(自定义)初始化(在您的情况下,Control
为Button
)需要更多而不是简单的声明。除了给出名字(你做的),另外两件重要的事情是:
Control
父因此,将这些注意事项添加到您要创建的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
数组,除非出于某种原因要列出它。但即使您想列出它,也应使用List
和List.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);
}