No existe tal cosa como imposible en el desarrollo de software. Imposible simplemente toma más tiempo.
He investigado el problema. Si realmente se necesita Flow Layout, se puede hacer con un poco de trabajo. Dado que FlowLayoutPanel establece los controles sin tener en cuenta particularmente el número de filas/columnas, sino más bien el ancho/alto acumulativo, es posible que deba realizar un seguimiento de la cantidad de controles que ya ha agregado. En primer lugar, establezca el autosize en falso, luego enganche su propia lógica de administración de tamaño a los eventos ControlAdded/ControlRemoved. La idea es establecer la anchura y altura del panel de tal manera, que usted va a obtener su número deseado de 'columnas' allí
prueba de concepto sucio:
private void flowLayoutPanel1_ControlAdded(object sender, ControlEventArgs e)
{
int count = this.flowLayoutPanel1.Controls.Count;
if (count % 4 == 0)
{
this.flowLayoutPanel1.Height = this.flowLayoutPanel1.Height + 70;
}
}
si el panel tiene inicialmente ancho para 4 controles, generará fila para los nuevos. El controlador ControlRemoved debería verificar lo mismo y disminuir la altura del panel, o obtener todos los controles contenidos y colocarlos de nuevo. Deberías pensarlo, puede que no sea el tipo de cosa que quieres. Depende de los escenarios de uso. ¿Todos los controles serán del mismo tamaño? Si no, necesitarías una lógica más complicada.
Pero realmente, piense en el diseño de la tabla: puede envolverlo en una clase auxiliar o derivar un nuevo control de él, donde resolvería toda la lógica de colocación de control. FlowLayout facilita agregar y eliminar controles, pero luego ingresa el código de administración de tamaños. TableLayout le ofrece un buen mecanismo para filas y columnas, administrar el ancho y alto es más fácil, pero necesitaría más código para cambiar la ubicación de todos controles si desea eliminar uno de forma dinámicamente.
Me sorprende que nadie haya respondido a esta, estoy teniendo el mismo problema. ¿Bache? – echo
El TableLayoutPanel puede ser una mejor solución para usted: tiene soporte integrado para columnas y filas de tamaño automático, así como tamaño automático para todo el panel. – Bevan