J'ai une étiquette sur un écran d'accueil qui s'affiche pendant 4 secondes. J'essaie de faire en sorte que l'étiquette affiche le processus de chargement en pourcentage. Évidemment, c'est juste pour montrer à l'utilisateur que le programme démarre réellement et ne "charge" rien. Y a-t-il un moyen pour que l'étiquette affiche le pourcentage (allant de 1% à 100%) dans les 4 secondes? Un peu perdu sur la façon de le faire.C# - Affichage du chargement de 1 à 100% en 4 secondes
Répondre
Placez un contrôle Timer sur le formulaire et définissez sa propriété Interval sur 40 et sa propriété Enabled sur true. Créer une variable sous forme de niveau comme celui-ci:
private int _Progress = 0;
Dans l'événement Tick de la minuterie, mettre ce code:
if (_Progress < 100)
{
_Progress++;
label1.Text = _Progress.ToString() + "%";
}
else
{
timer1.Enabled = false;
}
minuteries ne sont pas vraiment précis à la milliseconde, donc ce ne sera pas exactement 4 secondes, mais ça va faire l'affaire.
Le problème est que votre solution nécessite l'exécution du programme, et il veut quelque chose qui montre que le programme est en cours de chargement pendant qu'il est en train de démarrer. –
@James: sérieux? Faire un écran de démarrage en C++ non géré? Les obusiers ont tendance à faire un gros désordre quand vous les utilisez sur des souris. :) – MusiGenesis
@Nate: cela signifie probablement que cela prend seulement 1,6 secondes pour charger votre formulaire principal. – MusiGenesis
En supposant que vous parlez WinForms (pas WPF), le moyen le plus simple serait un contrôle de minuterie. Régler le délai d'attente pendant 40 ms (4 secondes = 4000 ms 4000 ms/100 mises à jour = 40 ms). Créez un entier de niveau classe pour suivre la progression. Ensuite, votre code pour l'événement OnTick ressemblerait à quelque chose comme ça ...
if(progress < 100)
{
progress++;
progessLabel.Text = String.Format("Loading... Progress: {0}%", progress);
}
else
{
timer.Enabled = false;
}
C'est * deja vu * encore une fois! – MusiGenesis
Une minuterie avec l'intervalle défini dire 100 millisecondes serait l'approche la plus simple. Tenez compte du nombre de fois que l'événement timer est appelé et mettez à jour la barre de progression de 2,5% chaque tick.
Bien que cela fonctionne, je dirais qu'une barre de progression n'est pas idéale pour cette situation. Au lieu de cela, un graphique animé serait préférable car il donne une indication que votre programme démarre, mais ne trompe pas comme une barre de progression peut.
Je pense que Microsoft fait régulièrement cette erreur en utilisant des barres de progression trompeuses dans certaines applications.
Netscape avait l'habitude de faire cela avec une barre de progression qui allait tout à fait vers la droite, puis se retournait et commençait à revenir vers la gauche, et ainsi de suite aussi longtemps que le chargement prenait (ce qui était généralement dans les années 90). – MusiGenesis
- 1. Affichage de UIActivityIndicator pendant x secondes
- 2. Iphone affichage de temps de tableview en secondes
- 3. Dictionnaire 1 à 1 bidirectionnel en C#
- 4. Dans csh, pourquoi 4 - 3 + 1 == 0?
- 5. NSNombre de secondes à Heures, minutes, secondes
- 6. Synthèse efficace d'une fonction 4-à-1 dans Verilog
- 7. Affichage indicateur de chargement alors que le contenu du chargement dans le cadre intérieur
- 8. ASP.NET, Affichage du message de chargement pendant la publication
- 9. Accès à la mémoire supérieure à UINT_MAX * 4 en C?
- 10. Affichage du code étendu du compilateur - C++
- 11. ISO 9797-1 Algorithme 1 [CBC-MAC] en C#
- 12. Affichage Datetime en utilisant C#
- 13. Crash C# lors du chargement C++ dll
- 14. Pourquoi le compte int saute-t-il de 1 à 4 en entrant dans une boucle? C++
- 15. silverlight limité à 100% de la hauteur du navigateur
- 16. UnauthorizedAccessException sur MemoryMappedFile en C# 4
- 17. C#: Archivage d'un fichier en parties de 100 Mo
- 18. Problème lors du chargement de vix.dll
- 19. Création d'échantillons MPEG-4 en Java
- 20. Optimisation du temps de chargement de presentModalViewController:
- 21. C# 4 paramètre optionnel
- 22. Affichage d'une boîte de dialogue "Chargement en cours" ou d'un curseur occupé sur le démarrage AIR
- 23. Chargement de la plume et affichage de la fenêtre dans Objective C++
- 24. Chargement de la DLL C++ managée à partir du programme C++ ordinaire via LoadLibrary
- 25. rusage() mesuré en secondes ou en millsecondes?
- 26. Comment convertir les secondes en heures, minutes et secondes?
- 27. Quelle est la meilleure façon d'écrire [0..100] en C#?
- 28. C# Icônes de chargement en cours d'exécution
- 29. Retourne JavaScript(). 4 bonnes actions - 1 action maléfique!
- 30. Chargement de maillage à partir du fichier X avec Direct X 9 en C++
Mais cela ne dépendrait-il pas de la performance de l'ordinateur? Je veux dire que même si votre écran de démarrage indique "Terminé" parce que vous utilisez un temps fixe, votre formulaire principal peut ne pas être terminé à ce moment-là. – Tarik
Eh bien, il est moins probable que cela arrive dans les ordinateurs rapides actuels. – Tarik