J'ai ce formulaire, avec un contrôle de tabulation et une zone de liste à l'intérieur:
Lorsque je redimensionne la hauteur de la fenêtre, j'obtiens quelque chose comme ceci:
Cependant, je souhaitais réellement que le contrôle des onglets et la zone de liste soient redimensionnés avec le résultat suivant:
Je pense pouvoir obtenir cet effet en répondant simplement à une sorte de méthode onResize()
dans le formulaire et en effectuant mes propres calculs pour mettre à jour manuellement la taille du contrôle de tabulation et de la zone de liste en conséquence.
Cependant, j'ai vu de nombreuses applications atteindre cet effet, alors je suppose qu'il existe une meilleure façon de le faire, peut-être une fonctionnalité intégrée.
Connaissez-vous un meilleur moyen d'obtenir cet effet?
Voici un bon tutoriel qui explique comment redimensionner les contrôles winform lors du redimensionnement du contrôle de formulaire conteneur à l'aide des propriétés dock et anchor:
En définissant les quatre valeurs de la propriété d'ancrage (haut, droite, bas, gauche), vous pouvez rendre les bords de votre contrôle immobiles par rapport au contrôle de formulaire, même lorsqu'il est redimensionné.
Vous pouvez utiliser la propriété anchor du contrôle Onglet - ancrez simplement les quatre côtés.
Cela peut aider:
Private Sub frmMain_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged 'tab container sizechanged event
tabMain.Dock = DockStyle.None 'set dock to none to allow resize
tabMain.Size = New Size(New Point(3, 3)) ' set size anything you want
tabMain.Dock = DockStyle.Fill 'set dock to fill to fit to container
End Sub
Vous pouvez utiliser la propriété Dock de Of Both Tab et la zone de liste pour remplir
Pour obtenir le résultat souhaité, placez le contrôle comme vous le souhaitez dans le format standard. utilisez ensuite la propriété Anchor en haut, en bas, à gauche et à droite. Cela vous permet de spécifier que vous souhaitez toujours que le contrôle soit relativement positionné dans le formulaire en fonction de la plus petite taille.
I.E: Définissez la propriété anchor sur Top, Bottom, Left, Right pour que le bord supérieur, inférieur, gauche et droit du contrôle soit toujours à la même distance de chaque bord, quelle que soit la taille du parent.
Si vous souhaitez que le contrôle soit placé à une distance spécifique de chaque bord de la surface de contrôle, utilisez Anchor Haut, Bas, Gauche, Droite
si vous souhaitez que le contrôle haut et bord gauche soit verrouillé à 8 pixels du bord supérieur et gauche du parent, définissez la propriété Anchor sur Top, le contrôle de gauche ne sera jamais redimensionné, il restera toujours relativement positionné à 8,8.
Vous utilisez les propriétés Dock
et Anchor
pour contrôler le redimensionnement d'un contrôle de composant lorsque son parent/conteneur est redimensionné.
Pour qu'un contrôle remplisse son conteneur, il suffit de
theControl.Dock = System.Windows.Forms.DockStyle.Fill
Pour conserver certaines marges, définissez la propriété Anchor
theControl.Anchor = CType((System.Windows.Forms.AnchorStyles.Top _
Or System.Windows.Forms.AnchorStyles.Bottom _
Or System.Windows.Forms.AnchorStyles.Left _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Vous pouvez également définir ces propriétés dans la fenêtre de l'outil Propriété.
Cliquez sur tab 1
ou tab 2
. Ensuite, dans le Property Tab
, recherchez la propriété Dock
. Ensuite, sélectionnez celui au milieu ou tapez plein.
Ou
Vous pouvez rechercher Anchor
et sélectionner le bottom tab
, le top tag
, le right tag
et le left tag
.
J'espère que cela a aidé!
Vous pouvez utiliser le code suivant dans l'événement de chargement de formulaire ...
TabControl1.Dock = DockStyle.Fill
ListBox1.Dock = DockStyle.Fill
Cela redimensionnera les contrôles lorsque le formulaire est également redimensionné.
Vous pouvez également utiliser le panneau tableLayout ou la propriété d'ancrage des contrôles pour obtenir le même résultat.
J'espère que cela t'aides!