Как правильно выравнивать элементы управления в 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
, иначе работа была выполнена.