Pergunta

.NET novato aqui ... Eu gostaria de fazer um botão em um formulário do Windows que exibe um progresso ou efeito "cooldown". Ou seja, quando o botão é pressionado, torna-se desativado. Como algum evento ou temporizador está progredindo, o botão mostra o progresso graficamente. Quando o progresso é concluído, os concluída gráficos e o botão fica ativado. Efeitos semelhantes podem ser vistos em muitos jogos.

Eu tinha considerado usando uma combinação da construído em classe Button, ea função GDI + drawPath, mas as escalas de complexidade mal, e tenho a sensação incômoda de que deve haver uma maneira mais fácil.

Todas as idéias? Obrigado.

Foi útil?

Solução

Se você realmente precisa para tê-lo no botão, eu iria com um evento de pintura personalizada.

algo semelhante a:

button += new buttonPaintEvent(buttonPaintEventHandlerMethod);

Outras dicas

A abordagem mais fácil é criar uma instância do controle de barra de progresso e, em seguida, você não precisa executar qualquer codificação personalizada / pintura personalizada. Se você realmente precisa de tudo o visor dentro do controle botão, então você tem duas opções. Você pode ficar mudando a propriedade Imagem do botão ou ir o porco inteiro e executar personalizado pintura do botão. pintura personalizada é muito simples, você só precisa desenhar texto mais qualquer imagem que desejar.

Outra forma fácil pode ser ter dois controles, um botão e uma barra de progresso que ocupam o mesmo espaço no formulário. Quando o usuário pressiona o botão, ocultar o botão e mostrar a barra de progresso. Atualizar a barra de progresso conforme necessário até que tudo o que o processamento é feito. Em seguida, ocultar a barra de progresso e mostrar o botão novamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top