Кнопка прогресса для Windows Forms
Вопрос
.NET новичок здесь ... Я хотел бы сделать кнопку в форме Windows, которая отображает прогресс или " время перезарядки " эффект. То есть, когда кнопка нажата, она становится отключенной. Когда происходит какое-то событие или таймер, кнопка отображает ход графически. Когда процесс завершится, рисунок завершится, и кнопка станет активной. Подобные эффекты можно увидеть во многих играх.
Я подумал об использовании комбинации встроенного класса Button и функции GDI + DrawPath, но сложность плохо масштабируется, и у меня возникает неприятное ощущение, что должен быть более простой способ.
Есть идеи? Спасибо.
Решение
Если вам действительно нужно, чтобы он был на кнопке, я бы пошел с настраиваемым событием рисования.
что-то похожее на:
button += new buttonPaintEvent(buttonPaintEventHandlerMethod);
Другие советы
Самый простой подход - создать экземпляр элемента управления индикатора выполнения, и вам не нужно выполнять какое-либо пользовательское кодирование / пользовательское рисование. Если вам действительно нужно отобразить все внутри кнопки управления, у вас есть два варианта. Вы можете продолжать изменять свойство изображения кнопки или перейти на всю свинью и выполнить пользовательское рисование кнопки. Пользовательская роспись довольно проста, так как вам нужно рисовать только текст и любое другое изображение.
Другим простым способом может быть наличие двух элементов управления, кнопки и индикатора выполнения, которые занимают одно и то же место в форме. Когда пользователь нажимает кнопку, скрыть кнопку и показать индикатор выполнения. Обновляйте индикатор выполнения по мере необходимости, пока не будет выполнена какая-либо обработка. Затем скройте индикатор выполнения и снова покажите кнопку.