将字符串转换为按钮

本文关键字:按钮 转换 字符串 | 更新日期: 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();

您正在动态地创建一个新的按钮来替换您最初设置的按钮的实例。这个新按钮与表单设计器上的按钮没有任何关系。