Question

Je vais avoir une période très difficile avec le FlowLayoutPanel.

J'ai une application WinForms avec un FLP (FlowLayoutPanel) avec un contrôle enfant - un tabcontrol (avec un navigateur Web en elle). La forme a également un TableLayoutPanel amarré sur le dessus, et un autre TableLayoutPanel amarré au fond. Donc, mon intention est de remplir l'espace entre ces TLP avec le FlowLayoutPanel. Tous les contrôles sont ajoutés à la forme en vue de la conception.

Ce que je dois - quand je redimensionnez la forme, le FLP devrait redimensionner bien avec elle, remplir le formulaire et le tabcontrol devrait remplir le FLP aussi.

Le formulaire est en fonctionnement maximisé, donc une première Redimensionner arrive par défaut lorsque je lance l'application - à ce moment-là, le FLP et son contrôle ne sont pas redimensionnés à moins que je tel les spécifiquement de le faire, dans le gestionnaire d'événements Form_Layout .

Le problème est que peu importe quelle combinaison de changements de taille, ancres, docks je tente dans ce gestionnaire d'événements, toujours en haut ou en bas de la tabcontrol est hors de la zone de forme et je ne peux pas voir la barre de défilement complète du webbrowser en elle; de sorte que le contrôle onglet est pas correctement arrimé à l'intérieur du FLP (ou le FLP n'est pas arrimé sous la forme), même si je dis qu'il soit. Voici le code Form_layout:

private void MyForm_Layout(object sender, LayoutEventArgs e)
{
    //resize FLP
    pnlMainFlowLayout.Size = this.Size - new Size(15, 0);
    pnlMainFlowLayout.Dock = DockStyle.Fill;
    pnlMainFlowLayout.BringToFront();

    //resize child control of FLP
    tabControl.Size = pnlMainFlowLayout.Size;
    tabControl.BringToFront();
}

J'ai vraiment besoin de comprendre le comportement de redimensionnement du FlowLayoutPanel.

Était-ce utile?

La solution

Il n'y a pas de point à l'aide d'un FLP si elle ne contient qu'un seul contrôle. Son travail consiste à couler les contrôles à l'intérieur de celui-ci, rien à couler s'il n'y a qu'un seul.

Utilisez le TabControl as-est, définissez sa propriété Dock pour remplir. Si cela se chevauchent en font l'un des TLP puis cliquez droit sur le TLP et cliquez sur « Envoyer à dos ».

Autres conseils

Lors de l'utilisation d'amarrage l'ordre dans lequel les contrôles sont ajoutés au parent sont importants. Le contrôle a ajouté d'abord une priorité plus élevée. Cette priorité pourrait conduire à des effets que vous décrivez.

Pour assurer le comportement correct d'accueil sélectionnez l'une des commandes amarrés au haut ou en bas et dire les envoyer à l'arrière-plan. Ensuite, sélectionnez l'autre contrôle et faire la même chose. Habituellement, cela résout ce genre de problèmes.

Tout comme une question d'intérêt pourquoi utilisez-vous une mise en page de flux pour rendre une seule page de l'onglet, ne serait-il préférable de placer le tabcontrol directement sur vous formulaire et définissez Dock pour remplir?

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