Кнопка прогресса для Windows Forms - PullRequest
3 голосов
/ 13 октября 2008

.NET новичок здесь ... Я хотел бы сделать кнопку в форме Windows, которая отображает эффект прогресса или "перезарядки". То есть, когда кнопка нажата, она становится отключенной. Когда происходит какое-то событие или таймер, кнопка отображает ход графически. Когда процесс завершится, рисунок завершится, и кнопка станет активной. Подобные эффекты можно увидеть во многих играх.

Я подумал об использовании комбинации встроенного класса Button и функции GDI + DrawPath, но сложность плохо масштабируется, и у меня возникает неприятное ощущение, что должен быть более простой способ.

Есть идеи? Спасибо.

Ответы [ 3 ]

1 голос
/ 13 октября 2008

Другим простым способом может быть наличие двух элементов управления, кнопки и индикатора выполнения, занимающих одно и то же место в форме. Когда пользователь нажимает кнопку, скрыть кнопку и показать индикатор выполнения. Обновляйте индикатор выполнения по мере необходимости, пока не будет выполнена какая-либо обработка. Затем скройте индикатор выполнения и снова покажите кнопку.

1 голос
/ 13 октября 2008

Самый простой подход - создать экземпляр элемента управления индикатора выполнения, и тогда вам не нужно выполнять какое-либо пользовательское кодирование / пользовательское рисование. Если вам действительно нужно отобразить все внутри кнопки управления, у вас есть два варианта. Вы можете продолжать изменять свойство изображения кнопки или перейти на всю свинью и выполнить пользовательское рисование кнопки. Пользовательская роспись довольно проста, так как вам нужно рисовать только текст и любое другое изображение.

0 голосов
/ 13 октября 2008

Если вам действительно нужно, чтобы оно было на кнопке, я бы выбрал событие рисования.

что-то похожее на:

button += new buttonPaintEvent(buttonPaintEventHandlerMethod);
...