Pregunta

He mirado el código generado diseñador de Forms y UserControls, y en el método InitializeComponent() que siempre comienzan con

    this.SuspendLayout();

y terminar con

    this.ResumeLayout(false);
    this.PerformLayout();

Pero por lo que puedo ver en la documentación de MSDN de esos métodos, no se termina con

    this.ResumeLayout(true); // Or just this.ResumeLayout()

hacer exactamente lo mismo? O me estoy perdiendo algo aquí?

pregunto porque voy a añadir un montón de controles en un método diferente, y pensé que debería hacer la rutina de suspender reanudación de ser agradable y eficiente. Pero no se puede averiguar cuál es la razón para esas dos llamadas a métodos son cuando puede parecer sólo tiene que utilizar uno ...

¿Fue útil?

Solución

El uso del reflector:

this.ResumeLayout() is equal to this.ResumeLayout(true)

Pero

this.ResumeLayout(true) is not equal to this.ResumeLayout(false) + this.PerformLayout()

Motivo:
Cuando se llama ResumeLayout con datos falsos, hay una colección de controles que es devuelto a través y la LayoutEngine llama InitLayout en cada uno de los controles en el diseño.

Otros consejos

SuspendLayout

  

Cuando la adición de varios controles a una   el control de los padres, se recomienda que   se llama al método SuspendLayout   antes de inicializar los controles que deben   adicional. Después de la adición de los controles para   el control de los padres, llame al   método ResumeLayout. Esta voluntad   aumentar el rendimiento de   aplicaciones con muchos controles.

PerformLayout

  

Obliga al control a aplicar la disposición   lógica para todos sus controles secundarios. Si   la método SuspendLayout era   llamada antes de llamar al    PerformLayou método t, la Layout evento se suprime. La layout evento puede ser suprimida utilizando la SuspendLayout y   métodos ResumeLayout.

MSDN Enlace - PerformLayout Método

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top