J'essaie d'aligner à droite un contrôle dans un fichier StatusStrip
. Comment puis je faire ça?
Je ne vois pas de propriété à définir sur les ToolStripItem
contrôles qui spécifie leur alignement physique sur le parent StatusStrip
.
J'essaie d'aligner à droite un contrôle dans un fichier StatusStrip
. Comment puis je faire ça?
Je ne vois pas de propriété à définir sur les ToolStripItem
contrôles qui spécifie leur alignement physique sur le parent StatusStrip
.
Réponses:
Je l'ai trouvé via les forums MSDN presque immédiatement après la publication :)
Vous pouvez utiliser un ToolStripLabel
pseudo contrôle d'alignement à droite en définissant la Text
propriété sur string.Empty
et en définissant la Spring
propriété sur true
. Cela le fera remplir tout l'espace disponible et poussera toutes les commandes à droite du ToolStripLabel
dessus.
StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table
(qui est la valeur par défaut)
Alignment
propriété, car elle n'a rien fait dans ma demande.
En outre, cela est dû au fait que dans l'API Win32, une cellule a une largeur fixe ou 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 du milieu et lui donner la propriété fill pour obtenir une barre d'état plus cohérente. Cohérent car Messages a un encart à sa gauche à droite où vous vous attendez. Un peu comme le cliché mspaint trouvé sur la page MSDN pour StatusBars
J'aime bien l'approbation créative: D
Vous pouvez afficher le Button
à la fin de StatusStrip
en utilisant la logique ci-dessous.
ToolstripLabel
à laStatusStrip
string.Empty
Padding
pour leToolstripLabel
Par exemple:
this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
J'ai trouvé que vous pouvez définir la disposition StatusStrip sur HorizontalStackWithOverflow. Ensuite, pour chaque contrôle sur le StatusStrip que vous souhaitez sur le côté droit, définissez l'alignement de contrôle sur Droite.
J'aime mieux cela car vous n'avez besoin d'aucune commande supplémentaire ou factice pour vous aligner.
Je trouve un moyen général de définir l'emplacement d'un contrôle dans StatusStrip
. Vous pouvez afficher le bouton à n'importe quelle position dans le StatusStrip
en suivant les étapes ci-dessous.
Définissez le texte comme une quantité d'espace appropriée comme
toolStripStatusLabel1.Text = "";
Si la mise en page n'est pas ce que vous voulez, passez à l'étape 2 pour modifier la quantité d'espace toolStripStatusLabel1.Text
, sinon le travail a été fait.
Définissez la propriété de la bande d'outils RightToLeft sur True.