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 ToolStripItemcontrô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 ToolStripItemcontrô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 ToolStripLabelpseudo contrôle d'alignement à droite en définissant la Textpropriété sur string.Emptyet en définissant la Springpropriété sur true. Cela le fera remplir tout l'espace disponible et poussera toutes les commandes à droite du ToolStripLabeldessus.
StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(qui est la valeur par défaut)
Alignmentproprié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 StatusStripen utilisant la logique ci-dessous.
ToolstripLabelà laStatusStripstring.EmptyPaddingpour leToolstripLabelPar 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 StatusStripen 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.