Ich habe ein Formular, in dem Fortschrittsmeldungen angezeigt werden, während ein ziemlich langer Prozess ausgeführt wird. Es handelt sich um einen Anruf bei einem Webdienst, sodass ich auf einem Fortschrittsbalken nicht wirklich einen Prozentsatz der vollständigen Zahl anzeigen kann. (Ich mag die Marquee-Eigenschaft des Fortschrittsbalkens nicht besonders.)
Ich möchte ein animiertes GIF zeigen, um dem Prozess das Gefühl einer Aktivität zu geben (z. B. Dateien, die wie ein Windows-Kopiervorgang von einem Computer auf einen anderen fliegen).
Wie machst Du das?
c#
winforms
animated-gif
Stuart Helwig
quelle
quelle
Antworten:
Es ist nicht zu schwer.
Dinge zu beachten:
Animierte Gifs:
Wenn Sie nach animierten Gifs suchen, können Sie diese generieren:
AjaxLoad - Ajax Gif-Generator wird geladen
Ein anderer Weg, es zu tun:
Eine andere Art und Weise , dass ich gefunden habe , das funktioniert ganz gut die Steuerung asynchroner Dialog ist , dass ich auf dem gefundenen Code Projekt
quelle
Application.DoEvents();
. Möglicher Ansatz: Ihre Geschäftslogik löst ein Ereignis aus, wenn etwas teilweise erledigt ist. Dann können alle Eigenschaften (z. B. Fortschrittsbalken oder Prozentsatz) aktualisiert und die Animation mit Application.DoEvents ()Ich hatte das gleiche Problem. Die gesamte Form (einschließlich GIF) wird angehalten, um sich selbst neu zu zeichnen, da im Hintergrund lange Vorgänge ausgeführt werden. Hier ist, wie ich das gelöst habe.
Ich habe einfach einen anderen Thread erstellt, der für diesen Vorgang verantwortlich ist. Dank dieser ersten Form wird das Neuzeichnen ohne Probleme fortgesetzt (einschließlich meiner GIF-Funktion). ShowProgressGifDelegate und HideProgressGifDelegate sind Delegaten in Form, die die sichtbare Eigenschaft von pictureBox mit gif auf true / false setzen.
quelle
Beachten Sie, dass Sie in Windows traditionell keine animierten Gifs verwenden, sondern nur kleine AVI-Animationen: Es gibt ein natives Windows-Steuerelement, um sie nur anzuzeigen. Es gibt sogar Tools zum Konvertieren von animierten Gifs in AVI (und umgekehrt).
quelle
System.Windows.Forms.PictureBox
Steuerelement unterstützt wird , verwende ich nur animierte GIFs.Wenn Sie es in ein PictureBox-Steuerelement einfügen, sollte es einfach funktionieren
quelle
Dies ist nicht der Fall, wenn Sie eine lange Operation hinter sich lassen, da alles anhält, da Sie sich im selben Thread befinden.
quelle
quelle
Ich hatte das gleiche Problem und stieß bei der Implementierung auf verschiedene Lösungen, mit denen ich verschiedene Probleme hatte. Im Folgenden habe ich einige Teile aus verschiedenen Posts zusammengestellt, die wie erwartet für mich funktioniert haben.
Hier ist die Ausführungsmethode, mit der auch das PictureBox-Steuerelement aufgerufen wird:
Beachten Sie, dass die PictureBox im Eigenschaftenfenster nicht sichtbar ist oder gehen Sie wie folgt vor:
quelle