Progressbar de style "marquee" : ca ne veut pas fonctionner :/

Progressbar de style "marquee" : ca ne veut pas fonctionner :/ - C#/.NET managed - Programmation

Marsh Posté le 04-06-2010 à 11:54:52    

Salut à tous
 
je dois faire un petit projet en C# et j'ai une action qui prend un temps que je ne peux pas derteminer à l'avance.
J'ai donc pensé mettre un petit ProgressBar qui va bien en mode Marquee (ca tournera sur des machines à base de XP et plus).
Or si j'ai bien compris le système, ce style de ProgressBar fonctionnerait "tout seul" jusqu"à ce qu'on lui dise de s'arreter, or dans mon cas il ne fait rien :/
 
A priori, le code suivant suffirait pour lancer la chose, mais sans succès :

Code :
  1. progressBar.Style = ProgressBarStyle.Marquee;
  2. // pour démarrer
  3. progressBar.MarqueeAnimationSpeed = 10;
  4. // pour arreter
  5. progressBar.MarqueeAnimationSpeed = 0;


 
Help ? :hello:


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 04-06-2010 à 11:54:52   

Reply

Marsh Posté le 04-06-2010 à 12:42:25    

pour arréter :
 
progressBar.Style = ProgressBarStyle.Continuous;
 
pas besoin d'utiliser MarqueeAnimationSpeed pour arréter.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-06-2010 à 13:08:22    

Moi j'aimerais bien pouvoir l'arreter, mais il veut même pas démarrer [:spamafote]


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 04-06-2010 à 13:20:06    

chez moi, ce code fonctionne très bien :  
(une form avec un progress en haut, et 2 boutons Start et Stop en bas) :
 

Code :
  1. using System;
  2. using System.Windows.Forms;
  3.  
  4. namespace pgbar
  5. {
  6.    public partial class Form1 : Form
  7.    {
  8.        public Form1()
  9.        {
  10.            InitializeComponent();
  11.            progressBar1.MarqueeAnimationSpeed = 30;
  12.            
  13.        }
  14.  
  15.        private void button1_Click(object sender, EventArgs e)
  16.        {
  17.            // bouton Start
  18.            progressBar1.Style = ProgressBarStyle.Marquee;
  19.        }
  20.  
  21.        private void button2_Click(object sender, EventArgs e)
  22.        {
  23.            // bouton Stop
  24.            progressBar1.Style = ProgressBarStyle.Continuous;
  25.        }
  26.    }
  27. }


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-06-2010 à 13:36:36    

Oué ben j'ai pareil, sauf que chez moi ca donne rien, top chelou ca :/
 
Jvais tester sur une autre bécane pour voir, sans tte l'install de VS2010 express.


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 04-06-2010 à 13:48:04    

par contre, t'as vu que j'avais défini le MarqueeAnimationSpeed dans le constructeur, et que je faisais démarrer la pgbar avec le ProgressBarStyle.Marquee ? toi tu fais l'inverse.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-06-2010 à 14:14:12    

Oui mais en fait c'est comme toi que j'avais pondu mon truc au départ, car ca me semblait plus "logique". Ensuite, j'avais inversé pour voir si ca changait qqch, mais sans succès...
 
Jvais refaire un projet from scratch pour tester ca, car je vois vraiment pas d'où ca peut venir. Merci en tout cas :)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 05-06-2010 à 09:50:59    

Pour info, j'ai refait une simple fenetre avec juste ce controle là sur ma machine au taf (VS2010 express) et toujours pas de marquee...
J'ai refait la même chose à la maison, mais sous VS2008, et là bien sûr aucun soucis.
Donc je pencherais pour un soucis quelconque avec mon install au taf.
 
Quoi qu'il en soit, merci :)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 05-06-2010 à 13:11:48    

de mémoire, je sais que sous XP, sur certaines machines, ça ne marche pas.  
Ce que je suis sûr, c'est que sur XP Home Edition, ça ne marche pas. Mais j'ai déjà vu des XP Pro ou ça ne marchait pas non plus.  
Donc ce style la, à éviter.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Marsh Posté le 05-06-2010 à 13:38:19    

J'ai vu sur MSDN que ca ne fonctionnait que sur les XP avec les styles visuels d'activés. Or sur ma machine du taf, sur XP donc, j'ai bien les styles activés, par contre ce n'est pas celui par défaut, il s'agit d'un thème "custom" (un bricopack pour être précis :o ).
Ceci expliquant ptêtre celà, je vais désactiver ca ASAP pour tester :)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 05-06-2010 à 13:38:19   

Reply

Marsh Posté le 06-06-2010 à 14:33:14    

SICKofitALL a écrit :

Oui mais en fait c'est comme toi que j'avais pondu mon truc au départ, car ca me semblait plus "logique". Ensuite, j'avais inversé pour voir si ca changait qqch, mais sans succès...
 
Jvais refaire un projet from scratch pour tester ca, car je vois vraiment pas d'où ca peut venir. Merci en tout cas :)


 
La programmation c'est pas mettre des trucs au pif en espérant que ca marche... Soit tu sais ce que tu fais, soit tu ne sais pas... J'ai l'impression que tu es dans le 2eme cas.


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 07-06-2010 à 07:40:22    

Tamahome a écrit :


 
La programmation c'est pas mettre des trucs au pif en espérant que ca marche... Soit tu sais ce que tu fais, soit tu ne sais pas... J'ai l'impression que tu es dans le 2eme cas.


Ah bon ???? Et moi qui était persuadé qu'il s'agissait de mélanger tout et n'importe quoi, puis de cliquer sur un bouton et de voir ce que ca donne. Comme un apprenti sorcier quoi .....  :pt1cable:  
Tu sais, lorsque je mets en production mes programmes, mes chefs s'attendent à ce que ca marche, or à priori c'est le cas, et ce depuis une bonne dizaine d'années... Je pense que si je ne savais pas ce que je fais, ca ferait longtemps que je me serais fait viré de mon taf.
Donc t'es mignon, mais sur un forum, soit on a une réponse constructive à donner et on la poste, soit on ne l'a pas et on évite alors d'écrire des trucs à la con. "J'ai l'impression que tu es dans le 2eme cas".
:hello:

Message cité 1 fois
Message édité par SICKofitALL le 07-06-2010 à 09:18:42

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 07-06-2010 à 10:58:41    

Pour info :
 
il s'agit bel et bien d'un soucis avec le thème visuel appliqué sur XP.
En remettant celui par défaut (le bleu), le marquee est parfaitement fonctionnel, que ce soit avec VS2008/.NET 3.5 et VS2010/.NET 4.0.
J'ai essayé avec d'autres thèmes visuels pour tester, et en fait ca depend de ces derniers, soit ils semblent implémenter cette fonction, soit pas :o
Quoi qu'il en soit, j'ai revu mon idée d'origine et mit en place un ProgressBar en Continuous, tout ce qu'il y a de plus classique.
 
Merci à tous :)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 09-04-2011 à 09:37:19    

SICKofitALL a écrit :

Ensuite, j'avais inversé pour voir si ca changait qqch, mais sans succès...


 

SICKofitALL a écrit :


Ah bon ???? Et moi qui était persuadé qu'il s'agissait de mélanger tout et n'importe quoi, puis de cliquer sur un bouton et de voir ce que ca donne. Comme un apprenti sorcier quoi .....  :pt1cable:


 
C'est pas moi qui le dit  [:elessar53] Ou alors t'es shyzo, et vous êtes plusieurs personnes dans ta tête  [:calahad]

Reply

Marsh Posté le 10-04-2011 à 03:09:54    

Tamahome a écrit :


 
C'est pas moi qui le dit  [:elessar53] Ou alors t'es shyzo, et vous êtes plusieurs personnes dans ta tête  [:calahad]


T'es migon, mais déterrer un topic d'ya un an juste pour répondre n'imp, perso ca me laisse perplexe :p


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 10-04-2011 à 09:47:21    

SICKofitALL a écrit :


T'es migon, mais déterrer un topic d'ya un an juste pour répondre n'imp, perso ca me laisse perplexe :p


 
Désolé j'étais occupé sur d'autres topics plus importants que le tien  [:clooney6], mais je tenais à répondre tout de même. [:clooney17]

Reply

Marsh Posté le 10-04-2011 à 18:32:27    

Merci de m'informer de ta vie passionnante, passons à autre chose maintenant :D


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 12-04-2011 à 23:03:53    

tu demandes, je te réponds, simple politesse.

Reply

Marsh Posté le 09-05-2011 à 15:20:42    

Bonjour,  
 
Je sais pas si vous regardé encore ce sujet mais j'ai un probleme identique que le votre avec ma progressBar, enfin meme peut etre pire car elle disparait et réapparé a la fin de mon chargement, donc elle ne sert a rien du tout...
Alors j'ai essayé en créant un nouveau projet, j'ai juste placé 2 bouttons et une progressBar comme votre exemple plus haut, et la NiqueL !!
Alors je ne comprends pas..
 
Voici mon code :

Code :
  1. private void AppliMainForm_Load(object sender, EventArgs e)
  2.         {
  3.             XMLVilles ChL = new XMLVilles();
  4.             ChL.ChargementListe(listVille);
  5.             progressBar1.MarqueeAnimationSpeed = 20;
  6.         }


Code :
  1. private void listVille_SelectedIndexChanged(object sender, EventArgs e)
  2.         {
  3.             progressBar1.Style = ProgressBarStyle.Marquee;
  4.             lblArrondissement.Visible = false;
  5.             cbBoxArrondissement.Visible = false;
  6.             lblStation.Visible = false;
  7.             cbBoxStation.Visible = false;
  8.             cbBoxStation.Text = "";
  9.             cbBoxStation.Items.Clear();
  10.             cbBoxArrondissement.Text = "";
  11.             cbBoxArrondissement.Items.Clear();
  12.             //progressBar1.Visible = true;
  13.             XmlDocument doc = new XmlDocument();
  14.             XMLVilles ville = new XMLVilles();
  15.             string select = this.listVille.Text;
  16.             string url = ville.RechercheUrl(select) + "/service/carto";
  17.             doc.Load(url);
  18.             List<String> mesArrondissements = new List<String>();
  19.             XmlNodeList listeNoeudsArrondissements = doc.GetElementsByTagName("arrondissement" );
  20.             if (listeNoeudsArrondissements.Count > 1)   //Savoir si il y a des arrondissements.
  21.             {
  22.                 ville.ChrgtCbBoxArrond(url, cbBoxStation, cbBoxArrondissement);
  23.                 cbBoxArrondissement.Visible = true;
  24.                 lblArrondissement.Visible = true;
  25.             }
  26.             else
  27.             {
  28.                 ville.ChrgtCbBoxSansArrond(url, cbBoxStation);
  29.                 cbBoxStation.Visible = true;
  30.                 lblStation.Visible = true;
  31.             }
  32.             progressBar1.Style = ProgressBarStyle.Continuous;
  33.         }


 
Durant le temps ou cette barre doit charger, au contraire elle disparait alors je ne comprend pas....  
Aidé moiii :'(

Reply

Marsh Posté le 18-05-2011 à 14:56:11    

ben normal... Tu dois mettre ton traitement dans un thread a part et laisser le thread principal a l'UI. Utilise un background worker par exemple...

Reply

Marsh Posté le 18-05-2011 à 21:35:02    

+1, et surtout ne pas accéder à la progressbar par le background worker directement, mais passer par sa méthode Invoke()

Message cité 1 fois
Message édité par Harkonnen le 18-05-2011 à 21:35:13

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-05-2011 à 22:55:38    

Harkonnen a écrit :

+1, et surtout ne pas accéder à la progressbar par le background worker directement, mais passer par sa méthode Invoke()


 
Oui je me suis penché sur l'histoire de ces Threads mais j'ai toujours un problème, enfin le même problème ^^
 

Code :
  1. private Thread myThread;
  2.         private delegate void IncreaseProgressBarValueDelegate();
  3.         private IncreaseProgressBarValueDelegate invokeDelegue;
  4.         private ProgressBarStyle pgbS=ProgressBarStyle.Continuous;
  5.         public AppliMainForm()
  6.         {
  7.             InitializeComponent();
  8.             invokeDelegue = new IncreaseProgressBarValueDelegate(this.IncreaseProgressBarValueMethode);
  9.             myThread = new Thread(new ThreadStart(ThreadLaunch));
  10.             myThread.Start();
  11.             myThread.Suspend();
  12.             this.progressBar1.MarqueeAnimationSpeed = 20;
  13.         }
  14.         private void listVille_SelectedIndexChanged(object sender, EventArgs e)
  15.         {
  16.             myThread.Resume();
  17.             // code .....
  18.             doc.Load(url);
  19.                
  20.            //code....
  21.             myThread.Suspend();
  22.         }
  23.  
  24.         private void ThreadLaunch()
  25.         {
  26.             while (true)
  27.             {
  28.                 pgbS = ProgressBarStyle.Marquee;
  29.                 this.progressBar1.Invoke(this.invokeDelegue);
  30.             }
  31.         }
  32.         private void IncreaseProgressBarValueMethode()
  33.         {
  34.             this.progressBar1.Style = this.pgbS;
  35.         }


 
 
Ma barre se charge lors de la fin du chargement... je ne comprends pas mon erreur !  
Pouvez vous m'aider svp :$

Reply

Marsh Posté le 18-05-2011 à 22:57:41    

Parcontre elle ne disparait plus ^^ mais ce n'est pas ce que je veux :(

Reply

Marsh Posté le 19-05-2011 à 15:39:05    

T'emmerdes pas avec un Thread de base, prends le background worker, il contient déjà les évenements qui vont bien (comme le report d'avancement pour faire évoluer ta progress bar)...
 
Arpès tu peux aussi réinventer la roue et refaire la meme chose avec un Thread...

Reply

Marsh Posté le 19-05-2011 à 18:09:28    

D'accord et bien je vais voir sa :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed