将字符串转换为按钮
本文关键字:按钮 转换 字符串 | 更新日期: 2023-09-27 18:05:03
我在图形winforms上创建了5个按钮(即:btn0, btn1, btn2, btn3, btn4)。我想用这些按钮填充一个数组。
下面的代码可以工作:
Button[] btn = new Button[5];
for (int i=0; i<5; i++)
Button[i] = new Button();
btn[0]=btn0;
btn[1]=btn1;
btn[2]=btn2;
btn[3]=btn3;
btn[4]=btn4;
但是我希望能够在for
循环中做到这一点(假设我有100个按钮)。这可能吗?
我已经尝试过这样做,但我得到一个错误:
不能隐式地将类型'string'转换为"System.Windows.Forms.Button"
Button[] btn = new Button[5];
for (int i=0; i<5; i++)
{
btn[i] = new Button();
btn[i] = "btn"+i.ToString():
}
如果您想将已经存在的按钮添加到集合中,那么您可以使用OfType扩展并将它们添加到List<Button>
(这比数组要好,因为你不需要知道表单上有多少个按钮)
在
形式的构造函数中public class Form1: Form
{
private List<Button> myButtons = new List<Button>();
public Form1()
{
InitializeComponent();
foreach(Button btn in this.Controls.OfType<Button>()
myButtons.Add(btn);
}
}
List<Button>
可以像数组一样使用
// Get the first button in the list
Button btn = myButtons[0];
// Change the caption of the buttons....
for(int x = 0; x < myButtons.Count; x++)
btn.Text = "Button" + x.ToString();
当然,你需要考虑你是否真的需要这个,因为表单控件集合已经允许你到达表单上的每个按钮,你可以从第一个例子中看到,我已经准备了列表。
请记住,当你写
btn[i] = new Button();
您正在动态地创建一个新的按钮来替换您最初设置的按钮的实例。这个新按钮与表单设计器上的按钮没有任何关系。