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


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.


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

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


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);

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


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ć.


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.


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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.