J'essaie d'aligner à droite un contrôle dans un StatusStrip
. Comment puis je faire ça?
Je ne vois pas de propriété à définir sur les contrôles ToolStripItem
qui spécifie leur alignement physique sur le parent StatusStrip
.
Trouvé via les forums MSDN presque immédiatement après la publication :)
Vous pouvez utiliser un ToolStripLabel
pour pseudo aligner les contrôles à droite en définissant la propriété Text
sur string.Empty
et en définissant la propriété Spring
sur true
. Cela le fera remplir tout l'espace disponible et pousser tous les contrôles à droite de ToolStripLabel
.
Comme note supplémentaire, cela est dû au fait que dans l'API Win32, une cellule est soit à largeur fixe, soit remplit l'espace restant -1
int statwidths[] = {100, -1};
SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");
Si la mémoire est bonne, vous ne pouvez avoir qu'une seule cellule de remplissage (-1) par barre d'état.
Vous pouvez également ajouter une troisième cellule centrale et lui donner la propriété fill pour obtenir une barre d'état plus cohérente. Cohérent, car Messages comporte un encart à gauche à droite là où vous vous y attendez. Un peu comme la photo mspaint trouvée sur le page MSDN pour StatusBars
J'aime bien l'approche créative: D
Pour moi, cela a pris deux étapes simples:
MyRightIntendedToolStripItem.Alignment
à Right
MyStatusStrip.LayoutStyle
à HorizontalStackWithOverflow
Vous pouvez afficher le Button
à la fin du StatusStrip
en utilisant la logique ci-dessous.
ToolstripLabel
au StatusStrip
string.Empty
Padding
pour le ToolstripLabel
Par exemple:
this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
Conservez une étiquette Toolstrip, définissez la propriété Spring sur true et pour aligner le texte de l'étiquette dans BottomLeft
J'ai constaté que vous pouvez définir la disposition StatusStrip sur HorizontalStackWithOverflow. Ensuite, pour chaque contrôle sur le StatusStrip souhaité sur le côté droit, définissez l'alignement du contrôle sur Droite.
J'aime mieux cela car vous n'avez pas besoin de commandes supplémentaires ou factices pour vous aligner.