Forçar o winforms automouseize a acontecer
-
21-09-2019 - |
Pergunta
Eu tenho a seguinte estrutura em um formulário do Windows:
Form (AutoResize = true, AutoSizeMode = GrowAndShrink)
FlowLayout (AutoResize = true, AutoSizeMode = GrowAndShrink)
GroupBox
GroupBox
GroupBox
StatusStrip
Minha expectativa é que a alteração da visibilidade das caixas de grupo deve fazer com que a janela se encaixe em um novo tamanho para recuperar o espaço vazio ou acomodar novos controles. No entanto, isso não acontece automaticamente. Se eu minimizar a bandeja e restaurar o formulário (ou seja, alternar visível, ShowIssaskBar, WindowState = Normal/Minimized), então, quando reaparece, ele terá atualizado corretamente. Outra coisa que desencadeia é uma atualização para o conteúdo em um statusstrip na parte inferior da página (mostrando um rótulo, alterando uma barra de progresso etc.). Eu tentei várias combinações inspiradas em vodoo de invalidação/atualização/onResize etc., mas sinto que estou perdendo algo um pouco mais fundamental e espero que alguém possa ver a falha óbvia no que estou descrevendo.
Todas as minhas atualizações para os widgets no formulário são invocadas/invocadas, se isso for relevante.
Solução
Não posso reproduzir esse problema com um formulário de teste simples que usa suas configurações de layout e propriedades. A área do cliente do formulário é encolhida na inicialização e cresce conforme necessário para tornar a caixa de grupo visível quando eu definir sua propriedade visível como TRUE.
Você pode solicitar um recálculo de layout explícito com o método performayout ().