2009-02-28 36 views
6

Estoy trabajando en una máquina de discos winforms en C#. Me gustaría tener una barra de progreso vertical para el control de volumen. ¿Alguien sabe cómo hacer eso?¿Cómo puedo hacer que una barra de progreso de winforms se mueva verticalmente en C#?

+0

No utilice una barra de progreso para esto; una barra de seguimiento vertical es el control más apropiado. Las barras de progreso están diseñadas para la salida visual, y abusar de los controles de esta manera conduce a interfaces de usuario incómodas. – Rob

+0

Ese es un buen punto. Vi "barra de progreso vertical" y no miré el resto. Probablemente, una barra de progreso no sea lo que se debe usar para mostrar el nivel de un control de volumen. –

Respuesta

17

No sé que haría uso de una barra de progreso para el control el volumen, pero a pantalla el nivel de volumen se puede utilizar un control tomada de usuario o usted podría cambiar el tamaño de una etiqueta con un color de fondo (ese último método es algo así como kludgy)

La barra de progreso no está destinada a tomar entrada, sin importar la orientación.

Si realmente desea controlar el volumen, considere usar una barra de desplazamiento vertical, o una barra de seguimiento con a vertical orientation.

Por lo que vale la pena, hay a discussion on how to create a vertical progress bar on MSDN, donde se sugieren hacer esto:

using System; 
using System.Windows.Forms; 

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

el cual establece el indicador PBS_VERTICAL en Style.

+0

+1: "Funciona en mi máquina" – Sung

+0

+1 Gracias, esto funciona muy bien. – Krakerjak

+0

Agregue lo siguiente a su clase y el tamaño se establecerá correctamente cuando arrastre el control a su formulario. override protegido System.Drawing.Size DefaultSize { get { return new System.Drawing.Size (23,100); } } –

6

Tiene que usar el ProgressBarRenderer para eso. Está documentado en MSDN

La documentación muestra realmente la implementación de una ProgressBar vertical, por lo que debería ser más fácil para usted. :-)

+0

+1 Esta solución funcionó, pero la que Daniel dejó se veía mejor. – Krakerjak

+0

No hay problema. Te acabo de decir lo que Microsoft dijo que debes hacer; es su marco, después de todo. es tu decisión si lo haces o no. :-) –

Cuestiones relacionadas