Анкер ToolStripProgressBar справа от строки состояния(StatusStrip)
у меня есть форма со строкой состояния, которая имеет 2 ToolStripStatusLabel
с последующим ToolStripProgressBar
. Я хочу progressbar всегда закреплен справа от строки состояния - поэтому, когда окно изменено / развернуто, оно должно автоматическое перемещение/перекрашивать.
Я думал, что это будет так же просто, как установить 1-й (выровненный слева)ToolStripStatusLabel
' s Spring
свойство true, поэтому, когда форма изменяется / увеличивается в размере, и есть больше места в наличии, 1-й ToolStripStatusLabel
заполнит это пространство и автоматически нажмет ToolStripProgressBar
справа.
но не только это не делает то, что я хочу - 1-й ToolStripStatusLabel
на самом деле охватывает как 2-й StatusLabel
и ProgressBar
, в основном занимая всю строку состояния.
Ни один из элементов управления ToolStrip не имеет якоря или даже MinSize.
так как же я:
- якорь
ToolStripProgressBar
справа от строки состояния(StatusStrip) - смешать несколько фиксированный размер элементы (e.g
ToolStripStatusLabel2
иToolStripProgressBar
) С переменным размеромToolStripStatusLabel1
что растет, когда есть дополнительное пространство?
заранее спасибо за ваше время и помощь !
~IM
3 ответов
есть простое решение. Сделайте один поддельный ToolStripStatusLabel, очистите .Текст и набор .Весна = правда;
после этого добавьте ToolStripProgressBar. Убедитесь, что заказ сначала метка, а затем progressbar.
для всех, кто может быть заинтересован.. Свойство Anchor доступно, хотя только в коде (не в конструкторе) ...но в любом случае это не работает.. Я оставил ошибку в Connect и получил generic WillNotFix с сообщением, указывающим, что они будут рассматривать его только для крупной ревизии.
Почему-то "весна" выглядит странным.. В моих ультра-симпистических примерах это работает, но в некоторых других, где я делаю некоторые пользовательские картины (но в дочерних формах в MDIPArent, причем последний имеет HT eStatusBar), это не так. В этих случаях все еще есть простой обходной путь-в событии ReSize формы MDIParent (которая имеет строку состояния) измените размер StatusLabel, чтобы сделать его больше в том же предложении, что и изменение ширины, поэтому он толкает ProgressBar к правому краю строки состояния
сначала измените AutoSize на false
toolStripProgressBar.AutoSize = false;
затем Подписаться на изменение размера statusStrip событие
statusStrip1.SizeChanged += statusStrip1_SizeChanged;
наконец, измените ширину бара в обработчике событий
private void statusStrip1_SizeChanged(object sender, EventArgs e)
{
toolStripProgressBar.Width = statusStrip1.Width - 95;
}