Как правильно выровнять элементы управления в StatusStrip? - PullRequest
88 голосов
/ 04 февраля 2009

Я пытаюсь выровнять элемент управления в StatusStrip. Как я могу это сделать?

Я не вижу свойства для установки ToolStripItem элементов управления, которое определяет их физическое выравнивание по родительскому элементу StatusStrip.

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

Ответы [ 8 ]

211 голосов
/ 04 февраля 2009

Нашел через форумы MSDN почти сразу после публикации :)

Вы можете использовать ToolStripLabel для псевдо-правого выравнивания, установив для свойства Text значение string.Empty и установив для свойства Spring значение true. Это заставит его заполнить все доступное пространство и переместит все элементы управления справа от ToolStripLabel над.

5 голосов
/ 04 февраля 2009

В качестве дополнительного примечания это связано с тем, что в Win32 API ячейка либо имеет фиксированную ширину, либо заполняет оставшееся пространство -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 для StatusBars

Мне нравится творческий подход: D

4 голосов
/ 11 сентября 2018

Для меня потребовалось два простых шага:

  1. Установите MyRightIntendedToolStripItem.Alignment на Right
  2. Установите MyStatusStrip.LayoutStyle на HorizontalStackWithOverflow
3 голосов
/ 16 сентября 2014

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

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

Например:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
2 голосов
/ 18 апреля 2017

Сохранить метку Toolstrip, установить свойство Spring в true и для выравнивания текста метки в BottomLeft

1 голос
/ 21 октября 2018

Я обнаружил, что вы можете установить для StatusStrip Layout значение HorizontalStackWithOverflow. Затем для каждого элемента управления на StatusStrip, который вы хотите с правой стороны, установите для параметра Alignment значение Right.

Мне это нравится больше, так как вам не нужны дополнительные или фиктивные элементы управления для выравнивания.

0 голосов
/ 18 мая 2017

Я нахожу общий способ установить местоположение элемента управления в StatusStrip. Вы можете отобразить кнопку в любом месте StatusStrip, выполнив следующие действия.

  1. Добавление ярлыка ToolstripLabel в StatusStrip
  2. Установить текст как подходящее количество места, как

    toolStripStatusLabel1.Text = "";

  3. Если макет не тот, который вы хотите, перейдите к шагу 2, чтобы изменить количество места в toolStripStatusLabel1.Text, иначе работа была проделана.

0 голосов
/ 09 мая 2016

Установите для свойства полосы инструментов RightToLeft значение True.

...