J'ai un formulaire affichant les messages de progression pendant l'exécution d'un processus assez long. C'est un appel à un service Web, donc je ne peux pas vraiment afficher un pourcentage complet sur une barre de progression de manière significative. (Je n'aime pas particulièrement la propriété Marquee de la barre de progression)
Je voudrais montrer un GIF animé pour donner au processus la sensation d'une activité (par exemple, des fichiers volent d'un ordinateur à un autre comme le processus de copie Windows).
Comment est-ce que tu fais ça?
c#
winforms
animated-gif
Stuart Helwig
la source
la source
Réponses:
Ce n'est pas trop dur.
Choses à prendre en considération:
Gifs animés:
Si vous recherchez des gifs animés, vous pouvez les générer:
AjaxLoad - Générateur de gif de chargement Ajax
Une autre façon de faire:
Une autre façon dont j'ai trouvé qui fonctionne assez bien est le contrôle de dialogue asynchrone que j'ai trouvé sur le projet de code
la source
Application.DoEvents();
. Approche possible: votre logique métier déclenche un événement lorsque quelque chose est partiellement fait, puis toutes les propriétés (par exemple la barre de progression ou le pourcentage) peuvent être mises à jour et l'animation peut être mise à jour avec Application.DoEvents ()J'ai eu le même problème. Forme entière (y compris gif) arrêtant de se redessiner en raison d'une longue opération en arrière-plan. Voici comment j'ai résolu ce problème.
J'ai simplement créé un autre thread pour être responsable de cette opération. Merci à ce formulaire initial continue de redessiner sans problèmes (y compris mon gif fonctionnant). ShowProgressGifDelegate et HideProgressGifDelegate sont des délégués sous forme qui définissent la propriété visible de pictureBox avec gif sur true / false.
la source
Notez que dans Windows, vous n'utilisez traditionnellement pas de Gifs animés, mais de petites animations AVI: il y a un contrôle natif de Windows juste pour les afficher. Il existe même des outils pour convertir des Gifs animés en AVI (et vice-versa).
la source
System.Windows.Forms.PictureBox
contrôle, j'utiliserai simplement des GIF animés.Si vous le mettez dans un contrôle PictureBox, cela devrait simplement fonctionner
la source
Ce n'est pas le cas lorsque vous démarrez une longue opération en arrière, car tout s'arrête puisque vous êtes dans le même thread.
la source
la source
J'ai eu le même problème et suis tombé sur différentes solutions en mettant en œuvre que j'avais l'habitude de faire face à plusieurs problèmes différents. Enfin, voici ce que j'ai rassemblé des morceaux de différents articles qui ont fonctionné pour moi comme prévu.
Voici la méthode d'exécution qui porte également l'appel du contrôle PictureBox:
Gardez à l'esprit que le PictureBox est invisible depuis la fenêtre Propriétés ou faites ci-dessous:
la source