Pregunta

.NET novato aquí ... Me gustaría hacer un botón en un formulario de Windows que muestre un progreso o "enfriamiento" efecto. Es decir, cuando se presiona el botón, se desactiva. A medida que progresa algún evento o temporizador, el botón muestra el progreso gráficamente. Cuando finaliza el progreso, el gráfico se completa y el botón se habilita. Se pueden ver efectos similares en muchos juegos.

Pensé en usar una combinación de la clase Button incorporada y la función GDI + DrawPath, pero la complejidad se escala mal y tengo la sensación de que debe haber una manera más fácil.

¿Alguna idea? Gracias.

¿Fue útil?

Solución

Si realmente necesita tenerlo en el botón, iría con un evento de pintura personalizado.

algo similar a:

button += new buttonPaintEvent(buttonPaintEventHandlerMethod);

Otros consejos

El enfoque más fácil es crear una instancia del control de la barra de progreso y luego no es necesario realizar ninguna codificación / pintura personalizada. Si realmente necesita mostrar todo dentro del control del botón, tiene dos opciones. Puede seguir cambiando la propiedad de imagen del botón o ir a por completo y realizar una pintura personalizada del botón. La pintura personalizada es bastante simple, ya que solo necesita dibujar texto más la imagen que desee.

Otra forma fácil podría ser tener dos controles, un botón y una barra de progreso que ocupen el mismo espacio en el formulario. Cuando el usuario presiona el botón, oculte el botón y muestre la barra de progreso. Actualice la barra de progreso según sea necesario hasta que se realice el procesamiento. Luego, oculta la barra de progreso y muestra el botón nuevamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top