Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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
Asp.net 是否有一种更优雅的方式将usercontrols添加到列表中?_Asp.net_Optimization_User Controls - Fatal编程技术网

Asp.net 是否有一种更优雅的方式将usercontrols添加到列表中?

Asp.net 是否有一种更优雅的方式将usercontrols添加到列表中?,asp.net,optimization,user-controls,Asp.net,Optimization,User Controls,我有10个自定义usercontrol,ID为usercontrol1、usercontrol2、usercontrol3……usercontrol10 我想将所有这些用户控件添加到列表“allusercontrol”。我是这样用蛮力做的 allusercontrol.Add(usercontrol1); allusercontrol.Add(usercontrol2); allusercontrol.Add(usercontrol3); . . . . . 有没有更优雅、更简单的方法来完成这

我有10个自定义usercontrol,ID为usercontrol1、usercontrol2、usercontrol3……usercontrol10

我想将所有这些用户控件添加到列表“allusercontrol”。我是这样用蛮力做的

allusercontrol.Add(usercontrol1);
allusercontrol.Add(usercontrol2);
allusercontrol.Add(usercontrol3);
.
.
.
.
.
有没有更优雅、更简单的方法来完成这项琐碎的任务?您确实看到usercontrols ID是一个系列的一部分
“usercontrol”+一个int

请尝试使用此代码

List<UserControl> controls = new List<UserControl>
{
    usercontrol1,
    usercontrol2,
    usercontrol3
};
列表控件=新列表
{
用户控制1,
用户控制2,
用户控制3
};
尝试使用此代码

List<UserControl> controls = new List<UserControl>
{
    usercontrol1,
    usercontrol2,
    usercontrol3
};
列表控件=新列表
{
用户控制1,
用户控制2,
用户控制3
};

我建议不要使用这种方法,因为它容易出错。如果您想重命名它们,如果您忘记了这一点,并添加了其他不应在此列表中的名为
ButtonX
的控件,该怎么办

相反,我将在容器控件中收集它们,如
面板
。 然后,您可以使用
LINQ
查找相关的
按钮

var myButtons = myPanel.Controls.OfType<Button>();
现在您可以迭代那些
按钮
,例如:

var myButtons = myPanel.Controls
                       .OfType<Button>()
                       .Where(btn => btn.ID.ToLower().StartsWith("button"));
foreach(Button btn in myButtons)
{
    // do something amazing
}
或者,您可以直接调用
ToList()
以获取
列表(问题的核心):

List allbuttons=myButtons.ToList();

我建议不要使用这种方法,因为它容易出错。如果您想重命名它们,如果您忘记了这一点,并添加了其他不应在此列表中的名为
ButtonX
的控件,该怎么办

相反,我将在容器控件中收集它们,如
面板
。 然后,您可以使用
LINQ
查找相关的
按钮

var myButtons = myPanel.Controls.OfType<Button>();
现在您可以迭代那些
按钮
,例如:

var myButtons = myPanel.Controls
                       .OfType<Button>()
                       .Where(btn => btn.ID.ToLower().StartsWith("button"));
foreach(Button btn in myButtons)
{
    // do something amazing
}
或者,您可以直接调用
ToList()
以获取
列表(问题的核心):

List allbuttons=myButtons.ToList();

使用Control.ControlCollection.AddRange-look

使用Control.ControlCollection.AddRange-look

不要以这种匿名方式命名控件。什么更容易出错:
Button1、Button2、Button2
btnisert、BtnUpdate、BtnDelet
?@TimSchmelter更新了我关于用户控件的问题这些用户控件来自哪里?它们已经在aspx页面上了吗?是的,它们已经在aspx页面上了。不要以这种匿名方式命名控件。什么更容易出错:
Button1、Button2、Button2
btnisert、BtnUpdate、BtnDelet
?@TimSchmelter更新了我关于用户控件的问题这些用户控件来自哪里?它们已经在ASPX页面上了吗?是的,它们已经在ASPX页面中了。仍然有很多代码,考虑一个100个用户控件的场景。好的,试试这个代码YouLook。仍然有很多代码,考虑一个100个用户控件的场景。谢谢蒂姆,这是一个很好的解决方案。谢谢蒂姆,这是一个很好的解决方案。