Анкер ToolStripProgressBar справа от строки состояния(StatusStrip)

у меня есть форма со строкой состояния, которая имеет 2 ToolStripStatusLabelс последующим ToolStripProgressBar. Я хочу progressbar всегда закреплен справа от строки состояния - поэтому, когда окно изменено / развернуто, оно должно автоматическое перемещение/перекрашивать.

Я думал, что это будет так же просто, как установить 1-й (выровненный слева)ToolStripStatusLabel ' s Spring свойство true, поэтому, когда форма изменяется / увеличивается в размере, и есть больше места в наличии, 1-й ToolStripStatusLabel заполнит это пространство и автоматически нажмет ToolStripProgressBar справа.

но не только это не делает то, что я хочу - 1-й ToolStripStatusLabel на самом деле охватывает как 2-й StatusLabel и ProgressBar, в основном занимая всю строку состояния. Ни один из элементов управления ToolStrip не имеет якоря или даже MinSize.

так как же я:

  1. якорь ToolStripProgressBar справа от строки состояния(StatusStrip)
  2. смешать несколько фиксированный размер элементы (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;
}