agregar - crear controles dinamicamente c# winforms
¿Lista dinámica descendente de controles en WindowsForms y C#? (2)
En nuestro proyecto, SharpWired , estamos tratando de crear un componente de descarga similar a las ventanas de descarga en Firefox o Safari. Es decir, una única lista de descargas de arriba hacia abajo que son controles personalizados que contienen barras de progreso, botones y lo que no.
Los requisitos son que debe haber una sola lista, con un elemento en cada fila. Cada elemento debe ser un control personalizado. Toda la lista debe ser dinámicamente redimensionable, de modo que cuando la haga más larga o más corta, la lista agregue una barra de desplazamiento cuando sea necesario y cuando la haga más delgada / más ancha, los controles personalizados deberían cambiar de tamaño al ancho de la lista.
Hemos intentado utilizar un FlowLayoutPanel
pero no hemos conseguido el cambio de tamaño para que funcione de la manera que queremos. Preferiblemente, solo deberíamos establecer el anclaje de los controles personalizados en Izquierda y Derecha. También pensamos en utilizar TableLayoutPanel
pero encontramos que agregar filas dinámicamente es demasiado grande hasta el momento.
Este debe ser un caso de uso bastante común, y me parece un poco raro que el FlowLayoutPanel
no tenga una forma intuitiva de hacerlo. ¿Alguien ha hecho algo similar o tiene consejos o trucos para ponernos en marcha?
¡Aclamaciones!
/Adán
.NET 3.5 SP1 introdujo un control DataRepeater Windows Forms que parece que haría lo que usted desea. Vincúlela a la lista de "descargas" (o lo que represente su lista) y personalice cada panel de elementos para incluir los controles que necesita.
Si no desea utilizar enlace de datos (a través del control DataRepeater
, como se mencionó anteriormente), podría usar un control Panel
normal y establecer su propiedad AutoScroll
en verdadero (para habilitar las barras de desplazamiento).
Luego, puede agregar manualmente sus controles personalizados y establecer la propiedad Dock
de cada uno en la parte Top
.