Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1686 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [c#] Problem: affichage d'une progressBar

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c#] Problem: affichage d'une progressBar

n°1006507
hep8
Posté le 09-03-2005 à 11:01:48  profilanswer
 

J'ai un problem avec l'affichage d'une ProgressBar.
 
Cette progressBar est contenue dans une fenetre:
 
public class Fen_Attente : System.Windows.Forms.Form
{
  public System.Windows.Forms.ProgressBar PBarre;
 .
 .
 .
 public void MiseAJour(int progress)
  {
   PBarre.Value = progress;
   this.Refresh();
  }
 .
 .
 .
}
 
Il n'y a pas de problem lorsque je ne touche pas a la fenetre, l'affichage se fait sans problem.
Mais lorsque je touche a la fenetre, elle devient blanche
 Sauf lorsque je rajoute le "this.refresh", qui permet de garder le contenu de la fenetre
 mais qui ne met pas a joure l'affichage de la progressBar, qui bloque au moment du deplacement.
 
J'ai donc testé de realiser les refresh avec un thread:
 
 public class ThreadBarre
 {
  Fen_Attente fen;
  int progress;
 
  // Constructeur
  public ThreadBarre (Fen_Attente Fen_Atte)
  {
   fen = Fen_Atte;
  }
  // Méthode de modification du paramètre
  public void SetProgress(int progression)
  {
   progress = progression;
  }
  // Methode de boucle du thread
  public void ThreadLoop()
  {
   int a=0;
   while (Thread.CurrentThread.IsAlive)
   {
    Thread.Sleep(100);
    a++;
    fen.MiseAJour(progress); // appel 10x par seconde
    // fen.Refresh();  // meme tester avec la progressBar en public fen.PBarre.refresh()
       // et a plusieur endroit du code
   }
  }
 }
puis
 Fen_Attente fen = new Fen_Attente();
 fen.Show();
 ThreadBarre test = new ThreadBarre(fen);
 Thread th = new Thread(new ThreadStart(test.ThreadLoop));
 th.Start();
 for(int i=0;i<11;i++)
 {
  Thread.Sleep(500);
  test.SetProgress(i*10); // progression a afficher (+10 tt les 1/2seconde)
 }
 th.Abort();
 fen.Hide();
 
Mais ca ne marche pas non plus.
 
J'ai tester aussi .Update() ou .Invalidate(), de la meme facon que le .refresh() mais ca ne change rien
 
Connaissez vous autre chose, du style Drawing ou Paint... moi je ne sais plus ou chercher...
 
Merci d'avance.


Message édité par hep8 le 09-03-2005 à 12:36:13
mood
Publicité
Posté le 09-03-2005 à 11:01:48  profilanswer
 

n°1006538
FlorentG
Unité de Masse
Posté le 09-03-2005 à 11:14:43  profilanswer
 

Au lieu d'utiliser un Thread, essaye avec un délégué :)

n°1006611
hep8
Posté le 09-03-2005 à 11:55:34  profilanswer
 

J'ai testé les délégué, au cas ou, mais l'affichage ne marche pas mieu, meme si le code est un peu optimisé.
 
La fonction qu'appel le delegué est toujours la meme que celle qu'executait le thread...
 
Mais merci pour ton intervention FlorentG, en + je ne conaissait pas les delegues!
 
Une autre idée? ... svp


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [c#] Problem: affichage d'une progressBar

 

Sujets relatifs
[ADA] Affiner l'affichage dans un Gtk_File_Selectionaffichage d'un article en fonction de l'id
format d'affichage d'heure en provenant d'une base sour la forme HH:MMRécuperation de variables d'un XML et affichage de ces derniers
Quels logiciels pour creer Fichier/Edition/Affichage...?[swing] affichage qui disparait en partie
[Résolu] [Html] Doctype : meilleur affichage sans !Différence d'affichage entre IE et Firefox avec du XHTML strict
affichage d'une appli Flash sous FirefoxProblèmes d'affichage avec FF
Plus de sujets relatifs à : [c#] Problem: affichage d'une progressBar


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR