Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将手动创建的按钮放入数组_C#_Winforms - Fatal编程技术网

C# 将手动创建的按钮放入数组

C# 将手动创建的按钮放入数组,c#,winforms,C#,Winforms,我在一个面板上有100个按钮。它们被命名为btn1-btn100。我正试图把它们列在一个清单上。这就是我到目前为止所做的: public void buttonList() { List<Button> panelButtonList = new List<Button>(); for (int x = 1; x <= 100; x++) { panelButtonList.Add(

我在一个面板上有100个按钮。它们被命名为btn1-btn100。我正试图把它们列在一个清单上。这就是我到目前为止所做的:

    public void buttonList()
    {
         List<Button> panelButtonList = new List<Button>();
         for (int x = 1; x <= 100; x++)
       {
         panelButtonList.Add(btn + x);
       }

    }
public void按钮列表()
{
List panelButtonList=新列表();
对于(intx=1;x
listpanelbuttonlist=this.YourPanel.Controls.OfType().ToList();

尝试上述操作。如果不希望包含其他按钮,则可能必须添加where子句。如果需要,可以根据id范围列出白名单。

您需要使用FindControl方法。生成控件名称“btn”+Convert.ToString(x)

您需要初始化一个按钮,而不会将其添加到x。这看起来像是另一种乐观编码。您是否认为
btn+x
将使用字符串“btn”,将
x
的值转换为一个字符串,将两个字符串连接起来,然后,灵感迸发,意识到生成的字符串恰好与对象的名称匹配,可能使用对象本身是一个很酷的主意?你不能这么容易做到。C是一种强类型语言。这意味着你不能btn+x
连接变量名。唯一的方法是通过反射,这样很容易弄乱。此时最好的方法是在代码中生成按钮,而不是使用变量名,特别是因为基于字符串的解决方案不太适合更改,并且可以很容易中断。在我看来,你应该重构你的代码,而不是寻找连接控件名称的解决方案。我建议对面板的控件集合进行一些简单的迭代。如果面板中没有其他按钮,它甚至不需要涉及id。如果只有基于id的白名单。请因为您没有创建名为
btn
的按钮实例,所以您得到:>名称btn在当前上下文中不存在否我希望面板中的所有按钮都不在外部,这非常有用谢谢:)
List<Button> panelButtonList = this.YourPanel.Controls.OfType<Button>().ToList();