cs_terranigma
Messages postés27Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention29 décembre 2010
-
8 déc. 2008 à 13:08
cs_terranigma
Messages postés27Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention29 décembre 2010
-
8 déc. 2008 à 17:35
Bonjour à tous,
Mon problème est le suivant : pour exploser les choses clairement on va dire que j'ai une classe "worker" d'un côté et l'UI de l'autre. J'aimerais savoir quelle est le meilleur moyen pour mettre à jour l'interface graphique de la fenêtre principal. J'ai un toolStrip qui contient une progressBar que je souhaiterais faire évoluer en fonction de la tâche et un label qui affiche la tâche courrante.
J'ai bien essayé diverses méthodes d'amateurs et de bidouilleurs qui sont plus ou moins efficace mais j'aimerais savoir le meilleur moyen de mettre à jour l'UI en fonction de ce que fait une tâche.
Merci d'avance à tous ceux qui me proposeront quelque chose!
Peut-être (même très certainement) y-t-il d'autres sources sur le site codes-sources mais je n'ai pas les noms sur le coup.
Bonne soirée,
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
cs_terranigma
Messages postés27Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention29 décembre 2010 8 déc. 2008 à 14:57
Merci pour la rapidité de la réponse Billou!
Je suis encore en train d'étudier le tuto pour l'instant mais j'ai regardé l'autre exemple avec la progressBar et celà ne correspond pas car je suis dans un classe et je n'ai pas accès à this.BeginInvoke()
Vous n’avez pas trouvé la réponse que vous recherchez ?
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 8 déc. 2008 à 15:16
Tout a fait.
Mais il ne faut pas que tu gère ta progressbar dans un classe à part.
Il faut que ce soit ta Form (ou UserControl) qui mette à jour la progressbar. Par conséquent, elle aura accès à this.BeginInvoke(..).
Tu vas me dire pourquoi ?
Parce que ta classe qui fait le traitement devient dépendante d'une interface; et ça, c'est pas bien :)
Une solution consiste donc à faire une classe traitement qui lance des événements (exemple, un event pour le début de traitement, 1 pr la fin, 1 pour chaque fin de fichiers traités...).
Ensuite, tu pourras alors binder ce que tu veux dessus: une console, une form, un usercontrol, un service windows etc...
Il te suffira alors d'appeler la classe et de t'abonner à ces événements. Chauqe événement fera des choses différents suivants le type de l'objet qui s'abonne aux événements.
Ou sinon, si tu veux pas batailler (même si je pense que ce serait une très bonne solution), tu donnes à ta classe l'objet Form et cette dernière n'aura plus qu'à appeler des méthodes pour mettre à jour ton progressbar.
Voila tout,
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
cs_terranigma
Messages postés27Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention29 décembre 2010 8 déc. 2008 à 16:27
hmmm :) la première solution semble propre et c'est vrai que j'aimerais bien mettre ça en place histoire d'être tranquille une fois pour toute et pouvoir la réutiliser par la suite. Ca semble cela dit au delà des mes compétences actuelles, aurait-tu par hasard un exemple ou vu une source qui utilise ton concept de classe traitement avec un bind et des évenements?
cs_terranigma
Messages postés27Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention29 décembre 2010 8 déc. 2008 à 17:16
Je viens de trouver ça en attendant après avoir interrogé google http://forums.whirlpool.net.au/forum-replies-archive.cfm/219650.html j'ai fais un test ça marche plutôt bien! Je pense qu'il s'agit de la méthode que tu m'as conseillé.
Je vais m'intéresser aussi à ton lien vu que c'est pour du traitement de fichiers.