2009-02-28 1 views
6

Я работаю над музыкальным автоматом winforms на C#. Я бы хотел иметь вертикальную панель прогресса для регулировки громкости. Кто-нибудь знает как это сделать?Как сделать индикатор выполнения winforms вертикальным перемещением на C#?

+0

Пожалуйста, не используйте индикатор выполнения для этого; вертикальный трекбар - наиболее подходящий элемент управления. Шаблоны выполнения предназначены для визуального вывода, и злоупотребление элементами управления таким образом приводит к неудобным пользовательским интерфейсам. – Rob

+0

Это хороший момент. Я видел «вертикальный индикатор прогресса» и не смотрел на остальных. Индикатор выполнения, вероятно, не предназначен для отображения уровня громкости. –

ответ

17

Я не знаю, что я хотел бы использовать индикатор для управления объемом, но дисплея уровня громкости можно использовать обращаются пользовательским контроля или вы могли бы просто изменить размер этикетки с цветом фона (этот последний метод является вроде kludgy, хотя)

Индикатор выполнения не предназначен для ввода ввода, независимо от ориентации.

Если вы действительно хотели бы управления том, рассмотрите использование вертикальной полосы прокрутки или трекбара с помощью a vertical orientation.

Для чего это стоит, есть a discussion on how to create a vertical progress bar on MSDN, где они предлагают делать это:

using System; 
using System.Windows.Forms; 

public class VerticalProgressBar : ProgressBar { 
    protected override CreateParams CreateParams { 
    get { 
     CreateParams cp = base.CreateParams; 
     cp.Style |= 0x04; 
     return cp; 
    } 
    } 
} 

, который устанавливает флаг PBS_VERTICAL в Style.

+0

+1: «Работает на моей машине» – Sung

+0

+1 Спасибо, это работает очень хорошо. – Krakerjak

+0

Добавьте в свой класс следующее, и размер будет установлен правильно, когда вы перетащите элемент управления в свою форму. protected override System.Drawing.Size DefaultSize { get { return new System.Drawing.Size (23,100); } } –

6

Для этого вам необходимо использовать ProgressBarRenderer. Это задокументировано в MSDN

В документации фактически показана реализация вертикального ProgressBar, поэтому он должен облегчить вам задачу. :-)

+0

+1 Это решение сработало, но тот, кто оставил Даниэль, выглядел лучше. – Krakerjak

+0

Нет проблем. Я просто сказал вам, что Microsoft сказала, что вы должны делать; это их рамки, в конце концов. это ваш выбор, делать это или нет. :-) –

Смежные вопросы