C# / winforms. Встроенный трекбар в StatusStrip
Поскольку я не мог (как я мог сказать) добавить трекбар в строку состояния с помощью дизайнера форм, я добавил следующий код в метод загрузки формы:
zoomTrackBar = new TrackBar();
ToolStripControlHost myControlHost = new ToolStripControlHost(zoomTrackBar);
mainStatus.Items.Add(myControlHost);
zoomTrackBar.Minimum = 0;
zoomTrackBar.Maximum = 100;
myControlHost.Height = statusLabel.Height; // statusLabel is a label already in the statusstrip... I'd like to match its height but not working
Некоторые вещи не работают правильно. Во-первых, трек-бар даже не появляется, пока я не разверну окно или не увеличу его размер многократно и случайно. Как только он отображается, он остается там независимо от состояния окна.
В строке состояния уже есть три элемента, прежде чем добавлена панель треков. Первый элемент - это метка автоматического размера, которая переходит во вторую и третью метки (с фиксированной шириной) (поэтому метки меньшей фиксированной ширины всегда остаются справа для координат x и y).
Созданная трекбар гигантская. Изменение высоты управляющего хоста или самой трекбар не меняет высоту трекбар. Это делает всю полосу состояния огромной.
Я бы даже согласился добавить кнопку, которая порождает временный вертикальный трекбар, если это будет проще.
Вызов Invalidate() для mainStatus не помогает.