¿Existe una forma más elegante de agregar controles de usuario a una lista?
Frecuentes
Visto 65 equipos
1
Tengo 10 controles de usuario personalizados con ID's usercontrol1, usercontrol2, usercontrol3......usercontrol10.
Quiero agregar todos estos controles de usuario a una Lista "allusercontrol". Hago esto con fuerza bruta así
allusercontrol.Add(usercontrol1);
allusercontrol.Add(usercontrol2);
allusercontrol.Add(usercontrol3);
.
.
.
.
.
¿Hay una manera más elegante y fácil de hacer esta tarea trivial? Ves que los ID de los controles de usuario son parte de una serie "usercontrol"+an int
3 Respuestas
1
Desaconsejaría este enfoque ya que es propenso a errores. ¿Qué sucede si desea cambiarles el nombre? ¿Qué sucede si se olvida de esto y agrega otros controles con nombre? ButtonX
que no debería estar en esta lista?
En su lugar, los recogería en un control de contenedor como Panel
. Entonces puedes usar LINQ
para encontrar lo relevante Buttons
:
var myButtons = myPanel.Controls.OfType<Button>();
Enumerable.OfType
filtrará y emitirá los controles en consecuencia. Si quieres filtrarlos más, puedes usar Enumerable.Where
, Por ejemplo:
var myButtons = myPanel.Controls
.OfType<Button>()
.Where(btn => btn.ID.ToLower().StartsWith("button"));
Ahora puedes iterar esos Buttons
, Por ejemplo:
foreach(Button btn in myButtons)
{
// do something amazing
}
O simplemente puedes llamar ToList()
conseguir un List<Button>
(el núcleo de tu pregunta):
List<Button> allbuttons = myButtons.ToList();
Respondido 02 Jul 12, 11:07
Gracias Tim, esa es una buena solución. - Ashwin Singh
0
prueba con este código
List<UserControl> controls = new List<UserControl>
{
usercontrol1,
usercontrol2,
usercontrol3
};
Respondido 02 Jul 12, 11:07
Todavía habría mucho código, considere un escenario de 100 controles de usuario. - Ashwin Singh
Ok, prueba con este código YourContainer.Controls.OfType (); - Aghilas Yakoub
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas asp.net optimization user-controls or haz tu propia pregunta.
No nombre sus controles de una manera tan anónima. Lo que es más propenso a errores:
Button1,Button2,Button2
orBtnInsert,BtnUpdate,BtnDelet
? - Tim Schmelter@TimSchmelter Actualicé mi pregunta para el control del usuario: Ashwin Singh
¿De dónde vienen estos controles de usuario? ¿Ya están en una página aspx? - walther
Sí, ya están en la página aspx. - Ashwin Singh