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