Pergunta

Eu olhei para o código de designer gerado de Formareia UserControls, e no InitializeComponent() método que eles sempre começam

    this.SuspendLayout();

e terminar com

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

Mas pelo que posso ver na documentação do MSDN desses métodos, não terminaria com

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

Faz exatamente a mesma coisa? Ou estou perdendo alguma coisa aqui?

Perguntando porque adicionarei um monte de controles em um método diferente e pensei que deveria fazer a rotina de suspensão de resumo para ser agradável e eficiente. Mas não consigo descobrir qual é o motivo dessas duas chamadas de método quando você pode aparentemente usar apenas um ...

Foi útil?

Solução

Usando refletor:

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

Mas

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

Razão:
Quando o resumeLayout é chamado com False, há uma coleção de controle que é percorrida e as chamadas de layoutEngine initlayout em cada um dos controles no layout.

Outras dicas

SussendLayout

Ao adicionar vários controles ao controle dos pais, é recomendável que você chame o método SussendLayout antes de inicializar os controles a serem adicionados. Depois de adicionar os controles ao controle dos pais, ligue para o método resumelayout. Isso aumentará o desempenho dos aplicativos com muitos controles.

PerformLayout

Força o controle a aplicar a lógica de layout a todos os seus controles infantis. Se o SussendLayout o método foi chamado antes de ligar para o PerformLayouT método, o Layout evento é suprimido. o layout O evento pode ser suprimido usando os métodos SussendLayout e RemumElayout.

Link msdn - Método de performayout

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top