Как правильно выравнивать элементы управления в StatusStrip?

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

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

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

Ответ 1

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

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

Правые выровненные сообщения http://i.friendfeed.com/f2fc7799d0897a4e835eedde83416f50c245cd6d

Ответ 2

В качестве добавленного примечания это связано с тем, что в 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) для каждой строки состояния.

Вы также можете добавить третью среднюю ячейку и дать этому свойству заливки, чтобы получить более согласованный вид StatusBar. Согласовано, потому что в сообщениях есть вставка слева направо, где вы ожидаете этого. Немного похоже на снимок mspaint, найденный на странице MSDN для StatusBars

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

Ответ 3

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

  • Добавьте ToolstripLabel в StatusStrip
  • Установить текст как string.Empty
  • Установите Padding для ToolstripLabel

Например:

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

Ответ 4

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

Ответ 5

Поскольку ответ был принят, теперь есть намного более простой способ. Просто установите для свойства инструмента RightToLeft значение True.

Ответ 6

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

  • Добавить ToolstripLabel в StatusStrip
  • Установите текст как подходящее пространство, например

    toolStripStatusLabel1.Text = "";

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