Jak wyrównać kontrolki w StatusStrip?

93

Próbuję wyrównać kontrolkę w pliku StatusStrip. Jak mogę to zrobić?

Nie widzę właściwości do ustawienia na ToolStripItemkontrolkach, która określa ich fizyczne wyrównanie na nadrzędnym StatusStrip.

Jak sprawić, by menu rozwijane Wiadomości było wyrównane do prawej? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90

Eric Schoonover
źródło
4
Utwórz element paska narzędzi etykiety z właściwością Spring ustawioną na true. Szczegóły: dotnetperls.com/statusstrip (PS Tak, wiem, że to stare pytanie.)
Nick Alexeev

Odpowiedzi:

229

Znalazłem go na forach MSDN prawie natychmiast po wysłaniu :)

Możesz użyć ToolStripLabelkontrolek a to pseudo wyrównania do prawej, ustawiając Textwłaściwość na string.Emptyi ustawiając Springwłaściwość na true. Spowoduje to wypełnienie całej dostępnej przestrzeni i przesunięcie wszystkich elementów sterujących na prawo od ToolStripLabelgórnej części.

Eric Schoonover
źródło
28
To zadziała TYLKO, jeśli StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(który jest domyślny)
AZ.
14
Ładny. StatusStripLabel ze sprężyną po obu stronach wydaje się wyśrodkować elementy sterujące
mcdon
Chciałbym, żeby istniał „prawdziwy” sposób na zrobienie tego, ale to działa, więc dzięki. Zastanawiam się, co Alignmentrobi ta nieruchomość, ponieważ nie zrobiła nic w mojej aplikacji.
TheGateKeeper
2
Zastanawiam się, jaka jest właściwość Alignment. Nie widzę takiej właściwości.
Data
Pozwoli to tylko na jeden element po etykiecie z napisem „Wiosna”, pozostałe nie pojawią się, zamiast tego użyj metody @VBobCat.
Pablo Carrasco Hernández
14

W moim przypadku wymagało to dwóch prostych kroków:

  1. Ustaw MyRightIntendedToolStripItem.AlignmentnaRight
  2. Ustaw MyStatusStrip.LayoutStylenaHorizontalStackWithOverflow
VBobCat
źródło
5

Jako dodatkowa uwaga wynika to z faktu, że w Win32 API komórka ma stałą szerokość lub wypełnia pozostałą przestrzeń -1

int statwidths[] = {100, -1};

SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");

Jeśli pamięć mi dobrze służy, możesz mieć tylko jedną komórkę wypełnienia (-1) na pasek stanu.

Możesz również dodać trzecią środkową komórkę i nadać jej właściwość fill, aby uzyskać bardziej spójny wygląd StatusBar. Spójne, ponieważ Wiadomości mają wstawkę po lewej stronie, w miejscu, w którym można się tego spodziewać. Trochę jak strzał mspaint znaleziony na MSDN dla StatusBars

Lubię jednak kreatywne podejście: D

Martijn Laarman
źródło
Dotyczy to StatusBars, a nie StatusStrips, które są w pełni zarządzanym kodem.
Filip Navara
3

Możesz wyświetlić Buttonna końcu StatusStrip, używając logiki poniżej.

  1. Dodać ToolstripLabel doStatusStrip
  2. Ustaw tekst jako string.Empty
  3. Zestaw PaddingdlaToolstripLabel

Na przykład:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
Chandran R
źródło
dodaj trzecią środkową komórkę i nadaj jej właściwość fill Nie widzę takiej właściwości.
Data
2

Zachowaj etykietę Toolstrip, ustaw właściwość Spring na true i dla etykiety wyrównaj tekst w BottomLeft

Visakh VA
źródło
1

Odkryłem, że możesz ustawić układ StatusStrip na HorizontalStackWithOverflow. Następnie dla każdej kontrolki w StatusStrip, która ma znajdować się po prawej stronie, ustaw wyrównanie kontrolki na Right.

Podoba mi się to bardziej, ponieważ nie potrzebujesz żadnych dodatkowych lub fałszywych elementów sterujących, aby wyrównać.

knightgambit
źródło
0

Jeśli ustawisz właściwość Spring kontrolki etykiety paska stanu na wartość true, ta etykieta zajmie dowolne miejsce, które nie jest używane przez inne kontrolki w StatusStrip.

Packiyaraj Ganesan
źródło
Ta odpowiedź jest już udzielona. Odpowiadając na tak stare pytanie z wieloma odpowiedziami, musisz to wcześniej sprawdzić.
marsh-wiggle
-2

Znajduję ogólny sposób ustawiania lokalizacji kontrolki w programie StatusStrip. Możesz wyświetlić przycisk w dowolnym miejscu w, StatusStripwykonując poniższe czynności.

  1. Dodaj ToolstripLabel do StatusStrip
  2. Ustaw tekst jako odpowiednią ilość miejsca, np

    toolStripStatusLabel1.Text = "";

  3. Jeśli układ nie jest tym, czego chcesz, przejdź do kroku 2, aby zmienić ilość miejsca, w przeciwnym razie toolStripStatusLabel1.Textpraca została wykonana.

Alan Ackart
źródło
-3

Ustaw właściwość paska narzędzi RightToLeft na True.

TravisHendrickson
źródło