/ / Error de propiedad superior de formularios Windows Forms: c #, formularios, controles, propiedades

Error de propiedad superior de formularios Windows Forms - c #, formularios, controles, propiedades

Estoy tratando de llenar un contenedor con cualquiercantidad de controles que tienen la misma altura y anchura. Permito que el usuario reduzca o haga crecer este contenedor y el contenedor organizará los controles para que se ajuste a la mayoría de los controles en una fila como sea posible. Aquí está el código para organizarlo:

        int row = 0;
int column = 0;
for (int i = 1; i <= controls.Count; i++)
{
controls.Values[i-1].Top = row * controls.Values[0].Height;
controls.Values[i-1].Left = column * controls.Values[0].Width;

if (i % controlsPerRow == 0)
{
// This finishes a row
row++;
column = 0;
}
else
{
column++;
}
}

El problema con el que me encuentro es que el primeroiteración del bucle, multiplicaré la altura del control por la fila y asignaré ese valor a la propiedad Top del control. La primera fila es 0 y la primera altura es 165. 0 * 165 = 0, pero la propiedad Top contiene un mágico -20 después de asignar el 0.

¿Alguien tiene alguna idea de cómo puede suceder esto?

Respuestas

2 para la respuesta № 1

Estás intentando reescribir el FlowLayoutPanel.
Considere usarlo en su lugar.


Además, parece que tu controls campo es un Dictionary<Something, Control>.
Tenga en cuenta que el orden de iteración de Dictionary.Values no está garantizado, lo que significa que no está pasando los controles en el orden en que se agregaron al diccionario.