我有10个自定义用户控件,ID为usercontrol1,usercontrol2,usercontrol3 ...... usercontrol10。
我想将所有这些用户控件添加到List“allusercontrol”中。我是这样做的蛮力
allusercontrol.Add(usercontrol1);
allusercontrol.Add(usercontrol2);
allusercontrol.Add(usercontrol3);
.
.
.
.
.
是否有一种更优雅,更简单的方法来完成这项琐碎的任务?您确实看到usercontrols ID是系列"usercontrol"+an int
答案 0 :(得分:1)
我建议反对这种方法,因为它容易出错。如果您想重命名它们会怎么样?如果您忘记了这一点并添加了名称为ButtonX
且不应该在此列表中的其他控件,该怎么办?
相反,我会在像Panel
这样的容器控件中收集它们。
然后,您可以使用LINQ
查找相关的Buttons
:
var myButtons = myPanel.Controls.OfType<Button>();
Enumerable.OfType
会相应地过滤和转换控件。如果您想要更多地过滤它们,可以使用Enumerable.Where
,例如:
var myButtons = myPanel.Controls
.OfType<Button>()
.Where(btn => btn.ID.ToLower().StartsWith("button"));
现在您可以迭代那些Buttons
,例如:
foreach(Button btn in myButtons)
{
// do something amazing
}
或者您可以致电ToList()
获取List<Button>
(问题的核心):
List<Button> allbuttons = myButtons.ToList();
答案 1 :(得分:0)
尝试使用此代码
List<UserControl> controls = new List<UserControl>
{
usercontrol1,
usercontrol2,
usercontrol3
};
答案 2 :(得分:0)
使用Control.ControlCollection.AddRange - 查看here