tiempo - tipos de datos dinamicos c#
Controles de forma dinámicos (5)
Usando C # 2.0, ¿cuál es la mejor manera de implementar controles dinámicos de formularios?
Necesito proporcionar un conjunto de controles por objeto de datos, entonces ¿debería simplemente hacerlo manualmente y establecerlos mientras incremente el valor superior o hay una forma mejor?
@Sam, sé que esta pregunta fue sobre Windows Forms, pero definitivamente debería comenzar a buscar en WPF. Este tipo de escenario es realmente fácil en WPF con DataTemplates y TemplateSelectors.
Bueno, así es como lo estamos haciendo ahora en un proyecto. pero eso solo es útil para casos simples. Sugiero que uses algún tipo de plantilla para casos más complejos.
Por ejemplo, utilicé Reflection para asignar un cierto tipo de control a cierta propiedad en los objetos de mi dominio en un proyecto anterior.
Puede intentar generar el código a partir de plantillas usando t4, vea Plantillas de T4 en Visual Studio para Generación de código de Screencast para ver un ejemplo simple. Puede aplicar esto a WinForms.
Además, DevExperience tiene un marco agradable (costoso), consulte DevExpress eXpressApp Framework ™ .
Puede usar paneles con diseño automático como FlowLayoutPanel y TableLayoutPanel .
Desafortunadamente, solo hay 2 paneles con diseño automático de fábrica, pero puede crear un panel de diseño personalizado.
Te recomendaría que leas los siguientes artículos:
Cómo: Crear un formulario de Windows redimensionable para la entrada de datos
Tutorial: creación de un formulario de Windows modificable para la entrada de datos
Otra opción sería usar WPF (presentación de presentación de Windows).
WPF es una combinación perfecta para su tarea.
Los controles de WPF se pueden alojar en aplicaciones de WinForms, por lo que no es necesario cambiarlo por completo.
Sí, he encontrado controles de distribución manual (incrementando su propiedad superior por el alto del control más un margen a medida que avanzo) para que sean razonablemente efectivos.
Otro enfoque es colocar los controles en los paneles con el Dock establecido en la parte superior, de modo que cada panel sucesivo se acople al que está arriba. Luego puede alternar la visibilidad de los paneles individuales y los controles de abajo se ajustarán para llenar el espacio disponible. Tenga en cuenta que esto puede ser un poco impredecible: mostrar un panel oculto que está acoplado a veces puede cambiar su posición relativa a otros controles acoplados.
¿Qué quieres decir con "dinámico"? ¿Un nuevo conjunto fijo de controles para cada fila de datos en el conjunto de datos? Luego use un UserControl
que contenga sus controles.
¿O quiere decir que, dependiendo de su diseño de datos, desea proporcionar al usuario un conjunto de controles personalizados, por ejemplo, un TextBox
de TextBox
para cada columna?