Bien que je trouve la réponse actuellement votée tout à fait adéquate, elle semble aussi légèrement plus désordonnée que nécessaire. Vous devez ajouter les contrôles à tableLayoutPanel avant de définir leurs propriétés. Visual Studio (2013 et probablement d'autres versions) affichera ces propriétés dans le cadre du contrôle
Quand en réalité, ils font partie de la table LayoutPanel.
Explication:
tableLayoutPanel.Controls.Add(**control**, x, y)
tableLayoutPanel.SetColumnSpan(**control**, '# of cols to span')
Exemple:
tableLayoutPanel1.Controls.Add(**button1**, 0, 0);
tableLayoutPanel1.SetColumnSpan(**button1**, 2);
tableLayoutPanel1.SetRowSpan(**button1**, 3);
Résultat: un bouton qui 'occupe' cet espace. (A condition qu'elle soit suffisamment grande pour couvrir la zone. Même si elle ne « couvrir » l'espace, il sera toujours « réserve » il.)
O O X X X
O O X X X
O O X X X
X X X X X
X X X X X
Réglage de la durée plus grande que la taille de la grille. .: Ne changez pas la taille de la grille. NOT recadrer/modifier le nombre à la taille de la grille. Ne pas jeter une erreur lors de la compilation.
Il va agir comme si la plage était définie sur la taille maximale de la grille actuelle (tableLayoutPanel). Ceci n'est pertinent que si la taille TLP/grille change.
Si vous ajoutez deux contrôles deux le même emplacement de grille par programme, le premier contrôle dans une grille conserve son emplacement. Tout contrôle ajouté par la suite est poussé vers le bloc de cellules suivant. Si un 'span' est ajouté, il traitera ce bloc de cellules tel qu'il est utilisé et continuera de rechercher un bloc de cellules inutilisé.
Ex: label1, label2 et label3 sont ajoutés à 0,0.
- label1 apparaîtra dans 0,0
- label2: 0,1
- label3: 0,2
Ex 2: l'étiquette 1 a une largeur de ligne de 2.
- label1: 0,0
- label2: relocalisé à 0,2
- label3: 0,3
Après avoir sélectionné le point de grille correcte et portées, vous pouvez alors plus optimisez votre mise en page en utilisant les propriétés du dock et de l'ancre.
code génial. Visual Studio Designer m'a induit en erreur. Je regardais dans les propriétés button1, essayait de lancer le bouton1 à l'élément toolstippanel et ainsi de suite ... merci! –
si vous aviez regardé Form.Designer.cs au lieu de concepteur visuel vous avez trouvé la solution directement. ;-) – Oliver
Je sais que c'est un ancien article, mais je tiens à souligner que vous n'avez pas besoin de faire les "conditions yoda" en C# car si les instructions sont fortement typées. (Et je crois que si vous faites une erreur avec les booléens et que vous placez une assignation au lieu d'une comparaison, cela génère un avertissement du compilateur, par opposition à l'erreur qu'il génère avec tout autre type.) – MiffTheFox