una barra para indicar el porcentaje, pero no una barra de progreso

Necesito una barra que indique un porcentaje de algo, como el consumo de batería o el tamaño de espacio utilizado de un disco duro. Me gustaenter image description here

Esto no es una barra de progreso. Cuando uso la barra de progreso, cada vez que envío el mensaje PBM_SETPOS, aumentará de 0 a la pos.

La barra debe tener la capacidad de establecer un valor manualmente y, después de eso, cambiará la región de color a la longitud especificada directamente, en lugar de aumentarla.

¿WinAPI tiene una función incorporada para este propósito?

preguntado el 22 de mayo de 12 a las 17:05

Puede usar una barra de progreso para esto, solo necesita solucionar uno de los mejoras añadido en Vista. A saber, la animación utilizada cuando aumenta la posición. Lea mi respuesta aquí para saber cómo: stackoverflow.com/questions/6128287/… -

So Every time you set the progress bar counter to N immediately afterwards set it to N-1. es la solucion? Lo intentaré, pero suena extraño... Gracias -

Así es. Es raro, pero así es como funciona con ese control. -

Gracias de nuevo, David. ¡¡Funciona!! Solo por curiosidad, ¿cómo podrías conocer este método "muy extraño"? ¿Está documentado en alguna parte? Por cierto, ¿conoces alguna manera de obtener el color azul como en la imagen de arriba? Dado que la barra de progreso solo tiene color verde, amarillo y rojo. ¿O la barra para mostrar el espacio en disco usado no está hecha por la barra de progreso, por lo que tiene más color para usar? Sé que hay una manera que necesita deshabilitar el estilo visual, pero como en la imagen de arriba, creo que usa el estilo visual:

No creo que esté documentado en ningún lado. Lo aprendí mientras intentaba responder una pregunta de desbordamiento de pila. Creo que lo encontré en un foro después de hacer una búsqueda en la web. -

1 Respuestas

Use un Panel y luego configure una etiqueta con él... Luego configure el ancho de la etiqueta con el color de fondo según el porcentaje...

Codifique de la siguiente manera:

string s27 = "select percentage from CandidateReg3 where candidateid='" + candidateid + "'";
DataTable d17 = cn.viewdatatable(s27);
if (d17.Rows.Count > 0) {
   for (int m = 0; m < d17.Rows.Count; m++) {
        percreg3 = int.Parse(d17.Rows[m]["percentage"].ToString());
        percregtotal = percreg3 + percreg;
   }
} else {
   percregtotal = percreg;
}

decimal percregtotals = (decimal)percregtotal / 100;
double percent = Convert.ToDouble(percregtotals);

// double percent = 1;
IndicatorLabel.Width = new Unit(percent * IndicatorPanel.Width.Value, UnitType.Pixel);

IndicatorLabel.ToolTip = percent.ToString("p0");
IndicatorLabel.Text = percent.ToString("p0"); 
IndicatorLabel.ForeColor=Color.White;

// IndicatorLabel.Text = "";
IndicatorLabel.BackColor = Color.Green;

Respondido 11 Oct 12, 09:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.