Я пытаюсь правильно выровнять элемент управления в файле StatusStrip
. Как я могу это сделать?
Я не вижу свойства для ToolStripItem
элементов управления, определяющего их физическое выравнивание по родительскому элементу StatusStrip
.
c#
winforms
statusstrip
Эрик Шуновер
источник
источник
Ответы:
Нашел на форумах MSDN почти сразу после публикации :)
Вы можете использовать элемент управления
ToolStripLabel
псевдо-выравнивания по правому краю, задав дляText
свойства значениеstring.Empty
и задав дляSpring
свойства значениеtrue
. Это заставит его заполнить все доступное пространство и сдвинуть все элементы управления вправо от верхнего краяToolStripLabel
.источник
StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table
(что по умолчанию)Alignment
делает свойство, потому что в моем приложении оно ничего не делало.Для меня потребовалось два простых шага:
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. Последовательно, потому что у Messages есть вставка слева и справа там, где вы этого ожидали. Немного похоже на снимок 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.
источник
Я нахожу общий способ установить расположение элемента управления
StatusStrip
. Вы можете отобразить кнопку в любом месте вStatusStrip
, выполнив следующие действия.Установите для текста подходящее количество места, например
Если макет не тот, который вам нужен, перейдите к шагу 2, чтобы изменить количество места
toolStripStatusLabel1.Text
, иначе работа будет выполнена.источник
Установите для свойства полосы инструментов RightToLeft значение True.
источник