Question

J'ai la structure suivante dans un formulaire Windows:

Form (AutoResize = true, AutoSizeMode = GrowAndShrink)
    FlowLayout (AutoResize = true, AutoSizeMode = GrowAndShrink)
        GroupBox
        GroupBox
        GroupBox
    StatusStrip

Mon attente est que le changement de visibilité des zones de groupe doit faire la fenêtre pour enclencher une nouvelle taille pour récupérer l'espace vide, ou accueillir de nouveaux contrôles. Toutefois, cela ne se fait pas automatiquement. Si je réduis sur le plateau, puis restaurer la forme (à savoir basculer visible, ShowInTaskbar, WindowState = Normal / Minimized), puis quand il réapparaît, il aura mis à jour correctement. Une autre chose qui le déclenche est une mise à jour du contenu dans un StatusStrip au bas de la page (montrant une étiquette, la modification d'un barre de progression, etc.). J'ai essayé différentes combinaisons de Invalider / Mise à jour / OnResize etc, mais je sens que j'inspiré voodoo-je manque quelque chose d'un peu plus fondamental et nous espérons que quelqu'un peut voir le défaut évident dans ce que je décris.

Toutes mes mises à jour des widgets sur le formulaire sont à l'intérieur InvokeRequired / Invoke, si cela est pertinent.

Était-ce utile?

La solution

Je ne peux pas repro ce problème avec une forme de test simple qui utilise vos paramètres de mise en page et la propriété. Espace client du formulaire est rétracté au démarrage et se développe au besoin pour rendre la zone de groupe visible quand je mis sa propriété Visible à true.

Vous pouvez demander un recalcul de mise en page explicite avec la méthode PerformLayout ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top