在我的程序中,我有150个按钮。它们都被命名为button1到button150,因为它们最初是由WinForms设计者生成的。我的目标是将它们全部添加到列表中以便稍后进行处理,我宁愿不只是写一行150行来说平板电脑。添加(无论哪个)。
我尝试使用我在网络上发现的一些我不完全理解的文章中的一些代码。但是我收到了编译错误。
List<Button> tabletBtns = new List<Button>;
for (int i = 0; i >= 150; i++)
{
var buttonName = string.Format("button{0}", i);
var button = Controls.Find(buttonName, true);
if (button != null)
{
tabletBtns.Add(button);
}
}
感谢您的时间,感谢您的帮助。
答案 0 :(得分:2)
问题列表:
您需要做的可能是:
List<Button> tabletBtns = new List<Button>;
for (int i = 1; i <= 150; i++)
{
var buttonName = string.Format("button{0}", i);
var button = Controls[buttonName] as Button; // if the buttons are all on the main canvas or Controls.Find(buttonName, true).First() as Button if they are hosted in some child custom or user controls
if (button != null)
{
tabletBtns.Add(button);
}
}
在与@JohnG离线讨论和研究后,看来他的解决方案更快,如果这对你很重要。对于名称检查,也许这样的事情将是一个开始:
var buttonsList = Controls.OfType<Button>().Where(b=> Regex.IsMatch(b.Name, @"^button(?<number>\d+)$")).ToList();
//this does not validate that the number is between 1 and 150, that is for another sleepless night :)
更好的选择是从代码而不是WinForms设计器生成和添加所有按钮。祝你好运!