web-dev-qa-db-fra.com

Comment aligner à droite les contrôles dans un StatusStrip?

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.

Comment faire pour que les messages soient alignés à droite? Http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b9

90
Eric Schoonover

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 .

216
Eric Schoonover

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

5
Martijn Laarman

Pour moi, cela a pris deux étapes simples:

  1. Ensemble MyRightIntendedToolStripItem.Alignment à Right
  2. Ensemble MyStatusStrip.LayoutStyle à HorizontalStackWithOverflow
4
VBobCat

Vous pouvez afficher le Button à la fin du StatusStrip en utilisant la logique ci-dessous.

  1. Ajoutez un ToolstripLabel au StatusStrip
  2. Définissez le texte sur string.Empty
  3. Définissez Padding pour le ToolstripLabel

Par exemple:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
3
Chandran R

Conservez une étiquette Toolstrip, définissez la propriété Spring sur true et pour aligner le texte de l'étiquette dans BottomLeft

2
Visakh V A

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.

1
knightgambit