Як правильно вирівняти елементи керування в StatusStrip?


93

Я намагаюся правильно вирівняти елемент керування в StatusStrip. Як я можу це зробити?

Я не бачу властивості встановлювати ToolStripItemелементи керування, які визначають їх фізичне вирівнювання для батьків StatusStrip.

Як зробити так, щоб повідомлення, що випадають, вирівнювали праворуч? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90


4
Зробіть елемент панелі інструментів міток із властивістю Spring, встановленою на true. Детальніше: dotnetperls.com/statusstrip (PS Так, я знаю, що це старе питання.)
Нік Алексєєв

Відповіді:


228

Знайшов на форумах MSDN майже відразу після публікації :)

Ви можете використовувати ToolStripLabelелементи керування для вирівнювання псевдоправоруч, встановивши Textвластивість string.Emptyта встановити Springвластивість true. Це призведе до того, що він заповнить весь доступний простір і натисне всі елементи керування праворуч від місця ToolStripLabel.


28
Це буде працювати ТІЛЬКИ, якщо StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(яке є типовим)
AZ.

13
Приємно. StatusStripLabel з Spring на будь-якій стороні, як видається, зосереджує елементи керування
mcdon

Я хотів би, щоб це було «справжнім» способом, але це працює так дякую. Цікаво, що Alignmentробить майно, оскільки воно нічого не зробило в моїй заяві.
TheGateKeeper

2
Цікаво, у чому полягає властивість Вирівнювання, я не бачу жодної такої властивості.
TaW

Це дозволить лише один елемент після мітки з "Spring", інші не відображатимуться, використовуйте метод @VBobCat.
Пабло Карраско Ернандес,

14

Для мене було потрібно два простих кроки:

  1. набір MyRightIntendedToolStripItem.AlignmentдляRight
  2. набір MyStatusStrip.LayoutStyleдляHorizontalStackWithOverflow

5

Як додаткове зауваження це пов'язано з тим, що в API Win32 клітинка має або фіксовану ширину, або заповнює решту місця -1

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

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

Якщо пам’ять мені не підходить, ви можете мати лише одну клітинку для заповнення (-1) на рядку стану.

Ви також можете додати третю середню комірку і надати цьому властивість fill, щоб отримати більш стислий вигляд StatusBar. Послідовно, оскільки в Повідомленнях є вставка зліва направо, де ви цього очікуєте. Трохи схожий на знімок mspaint, знайдений на сторінці MSDN для панелей стану

Мені подобається творчий підхід: D


Це справедливо для StatusBars, а не для StatusStrips, які повністю управляються кодом.
Філіп Навара

3

Ви можете відобразити Buttonв кінці StatusStrip, використовуючи логіку нижче.

  1. Додайте a ToolstripLabelдоStatusStrip
  2. Встановити текст як string.Empty
  3. Набір PaddingдляToolstripLabel

Наприклад:

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

додати третю середню комірку і дати це властивість fill. Я не бачу жодної такої властивості.
TaW

2

Зберігайте мітку Toolstrip, встановіть властивість Spring як true і для тексту вирівнювання міток у BottomLeft


1

Я виявив, що ви можете встановити StatusStrip Layout на HorizontalStackWithOverflow. Потім для кожного елемента керування на StatusStrip, який ви хочете мати на правій стороні, встановіть елемент Alignment (Вирівнювання) на Right.

Мені це подобається більше, оскільки для вирівнювання вам не потрібні додаткові або фіктивні елементи керування.


-2

Я знаходжу загальний спосіб встановити місце розташування елемента керування в StatusStrip. Ви можете відобразити Кнопку в будь-якому положенні в, StatusStripвиконавши наведені нижче дії.

  1. Додайте ToolstripLabel до StatusStrip
  2. Встановіть текст як відповідний простір, наприклад

    toolStripStatusLabel1.Text = "";

  3. Якщо макет не те, що ви хочете, перейдіть до кроку 2, щоб змінити кількість місця toolStripStatusLabel1.Text, інакше робота виконана.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.