Как правильно выровнять элементы управления в StatusStrip?
Я пытаюсь правильно выровнять элемент управления в StatusStrip
, Как я могу это сделать?
Я не вижу свойства для установкиToolStripItem
элементы управления, которые определяют их физическое выравнивание на родительскомStatusStrip
,
Как я могу получить сообщения выпадающего, чтобы выровнять по правому краю? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90
8 ответов
Нашел его через форумы MSDN практически сразу после публикации:)
Вы можете использовать ToolStripLabel
для псевдо-правого выравнивания элементов управления, установив Text
собственность на string.Empty
и настройка Spring
собственность на true
, Это заставит его заполнить все доступное пространство и переместить все элементы управления справа от ToolStripLabel
над.
Для меня это заняло два простых шага:
- Задавать
MyRightIntendedToolStripItem.Alignment
вRight
- Задавать
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
используя логику ниже.
- Добавить
ToolstripLabel
кStatusStrip
- Установить текст как
string.Empty
- Задавать
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
используя шаги ниже.
- Добавьте ToolstripLabel в StatusStrip
Установить текст как подходящее количество места, как
toolStripStatusLabel1.Text = " ";
Если макет не то, что вы хотите, перейдите к шагу 2, чтобы изменить количество места в
toolStripStatusLabel1.Text
, иначе работа была сделана.