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 не помогает.

0 ответов

Другие вопросы по тегам