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

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

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

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

8 ответов

Решение

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

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

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

  1. Задавать MyRightIntendedToolStripItem.Alignment в Right
  2. Задавать MyStatusStrip.LayoutStyle в HorizontalStackWithOverflow

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

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

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

Например:

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

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

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

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

Если вы установите для свойства Spring элемента управления метки состояния значение true, то эта метка займет все пространство, не используемое другими элементами управления в StatusStrip.

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

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

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

    toolStripStatusLabel1.Text = "   ";

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

Другие вопросы по тегам