105 votes

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

J'essaie d'aligner à droite un contrôle dans un fichier StatusStrip . Comment puis-je le faire ?

Je ne vois pas de propriété à définir sur ToolStripItem qui spécifie leur alignement physique sur le parent StatusStrip .

Comment faire pour que le menu déroulant des messages soit aligné à droite ? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90

4 votes

Créez un élément de la barre d'outils d'étiquettes avec la propriété Spring définie sur true. Détails : dotnetperls.com/statusstrip (P.S. Oui, je sais que c'est une vieille question).

259voto

spoon16 Points 17694

Je l'ai trouvé via les forums MSDN presque immédiatement après l'avoir posté :)

Vous pouvez utiliser un ToolStripLabel pour aligner pseudo-droite les contrôles en définissant le Text à la propriété string.Empty et la mise en place de la Spring à la propriété true . Cela aura pour effet de remplir tout l'espace disponible et de pousser toutes les commandes à droite de l'écran. ToolStripLabel sur.

33 votes

Cela va fonctionner UNIQUEMENT si StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table (qui est celui par défaut)

15 votes

Joli. Un StatusStripLabel avec Spring de chaque côté semble centrer les contrôles.

1 votes

J'aimerais qu'il y ait une "vraie" façon de faire, mais cela fonctionne donc merci. Je me demande ce que le Alignment parce qu'elle n'a rien fait dans mon application.

27voto

VBobCat Points 891

Pour moi, cela s'est fait en deux étapes simples :

  1. Set MyRightIntendedToolStripItem.Alignment a Right
  2. Set MyStatusStrip.LayoutStyle a HorizontalStackWithOverflow

5voto

Martijn Laarman Points 8097

En outre, cela est dû au fait que dans l'API Win32, une cellule est soit de 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 ma 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 attribuer la propriété fill pour obtenir une barre d'état plus cohérente. Cohérent parce que Messages a un encart à sa gauche, là où on l'attend. Un peu comme le cliché mspaint que l'on trouve sur le site de la Page MSDN pour StatusBars

J'aime l'approche créative cependant :D

0 votes

Cela est valable pour les StatusBars, mais pas pour les StatusStrips, qui sont du code entièrement géré.

4voto

Chandran R Points 37

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

  1. Ajouter un ToolstripLabel à la StatusStrip
  2. Définir le texte comme string.Empty
  3. Set Padding pour le ToolstripLabel

Par exemple :

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

2voto

Visakh V A Points 171

Conservez l'étiquette d'une barre d'outils, définissez la propriété Spring comme vraie et alignez le texte de l'étiquette en bas à gauche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X