Frage

.NET Neuling hier ... Ich möchte eine Schaltfläche in einem Windows-Formular machen, die einen Fortschritt oder „Abklingzeit“ Wirkung zeigt. Das heißt, wenn die Taste gedrückt wird, wird sie deaktiviert. Wie ein Ereignis oder Timer schreitet voran, zeigt die Taste grafisch den Fortschritt. Wenn der Fortschritt beendet ist, schließt die Grafik und die Schaltfläche aktiviert wird. Ähnliche Effekte können in vielen Spielen zu sehen.

Ich betrachtet hatte eine Kombination aus dem in Button-Klasse gebaut verwenden und die GDI + DrawPath Funktion, aber die Komplexität skaliert schlecht, und ich bekomme das nagende Gefühl, dass es muss ein einfacher Weg sein.

Irgendwelche Ideen? Danke.

War es hilfreich?

Lösung

Wenn Sie es wirklich auf der Schaltfläche haben müssen, ich mit einem benutzerdefinierten Farbe Event gehen würde.

etwas Ähnliches wie:

button += new buttonPaintEvent(buttonPaintEventHandlerMethod);

Andere Tipps

Der einfachste Ansatz ist eine Instanz der Fortschrittsbalken Kontrolle zu erstellen und dann müssen Sie keine benutzerdefinierte Codierung / custom Malerei auszuführen. Wenn Sie wirklich alles in der Steuertaste anzeigen müssen, dann haben Sie zwei Möglichkeiten. Sie können halten Sie die Bild-Eigenschaft der Schaltfläche zu ändern oder das ganze Schwein gehen und benutzerdefinierte Malerei der Schaltfläche ausführen. Custom Painting ist ziemlich einfach, da Sie nur Text und was auch immer gewünschte Bild zeichnen müssen.

Eine weitere einfache Möglichkeit könnte sein, zwei Kontrollen zu haben, einen Knopf und einen Fortschrittsbalken, der den gleichen Raum auf dem Formular zu besetzen. Wenn der Benutzer den Knopf drückt, blenden Sie die Taste und die Fortschrittsbalken zeigen. Aktualisieren Sie die Statusleiste nach Bedarf, bis alles, was die Verarbeitung erfolgt. Dann blenden Sie die Statusleiste und zeigen Sie die Taste erneut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top