使用字符串和整数 C# 的按钮数组
本文关键字:按钮 数组 整数 字符串 | 更新日期: 2023-09-27 18:30:31
我想制作包含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
}
Form
中的Control
(自定义)初始化(在您的情况下,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
.
我建议使用 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;