c# - 将字符串转换为按钮

标签 c# string winforms button

我在图形 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 个按钮)。这可能吗?

我试过用下面的方法来做,但是我得到一个错误:

Cannot implicitly convert type 'string' to '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();

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

关于c# - 将字符串转换为按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39270044/

相关文章:

c# - 返回 bool 值并重新抛出异常

c# - 类 Base64 字符串转换,到更小的字符集

wpf - CUDA 与 Windows 窗体/WPF 的集成

c# - RichTextBox 旋转文本以进行打印

c# - 迭代时只从 Api 获取结果

javascript - Window Active Directory React JS 自动身份验证

c# - 如何限制用户登录?

string - 将 Tex 字符串转换为 Tex 编号

c - 为什么 malloc 不能与 strcpy 一起使用?

c# - 具有不同缩放比例的监视器会在屏幕边界之间产生间隙