IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mono .NET Discussion :

mono, gtk progressbar, timers, Threading


Sujet :

Mono .NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2011
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 312
    Points : 749
    Points
    749
    Par défaut mono, gtk progressbar, timers, Threading
    Bonjour,

    J'ai un petit problème avec ma progress bar gtk, impossible de modifier sa valeur, un moment j'ai tout mis en static, mais ça fini par changer mes déclarations (et meme celles que je ne suis pas censé gérer moi même)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    using System;
    using Gtk;
    using System.Timers;
    using System.Threading;
     
    public partial class MainWindow: Gtk.Window
    {	
    	private static System.Timers.Timer TheTimer;
    	private static int i = 0;
     
    	public MainWindow (): base (Gtk.WindowType.Toplevel)
    	{
    		Build ();
     
    		//initialise un timer !
    		TheTimer = new System.Timers.Timer ();
    		TheTimer.Elapsed += new ElapsedEventHandler (modPbar);
    		TheTimer.Interval = 1000;
    		TheTimer.Enabled = true;
     
    	}
     
    	public static void modPbar (object source, ElapsedEventArgs e)
    	{
     
    		Console.WriteLine (i++);
    		setPbar (i); // ICI ça veut pas , il me dit qu'il ne connait pas setPbar.
     
    	}
     
    	protected void setPbar (int val)
    	{
    		int valcent = (val / 100);
    		progressbar1.Fraction = valcent; //si je déclarre setPbar en statique, c'est progressbar qu'il ne connait plus
    		progressbar1.Text = valcent.ToString ();
    	}
    }
    L'erreur est
    ligne 28: /home/vohu/code/csharp/mono/gtkpbar/test/MainWindow.cs(17,17): Error CS0120: An object reference is required to access non-static member `MainWindow.setPbar(int)' (CS0120) (test)

    merci pour votre aide :$

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Bonsoir.

    Ton problème n'a rien à voir avec mono ou gtk.

    Comme ta méthode modPbar est statique, elle a besoin de savoir à quel objet elle s'adresse (vu qu'elle appartient à ta classe MainWindow, et non à un objet de type MainWindow).

    soit tu retire le mot static de la déclaration de modPbar, soit tu ajoute un argument MainWindow à ta methode modPbar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void modPbar (object source, MainWindow cible, ElapsedEventArgs e)
    	{
     
    		Console.WriteLine (i++);
                              if(cible != null)
    		     cible.setPbar (i);
     
    	}

  3. #3
    Membre éclairé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2011
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 312
    Points : 749
    Points
    749
    Par défaut
    J'ai enlevé static, et effectivement, ça fonctionne...

    J'aimerai quand même comprendre ton autre solution

    J'ai comme dans ton exemple modifié ma fonction modPbar pour ajouter un paramètre de type MainWindow, mais faut il modifier l'appel que j'ai en ligne 18 ?


    Aussi, avec la première solution, ma barre de progression n'est pas affichée (pourtant, la console montre bien que la valeur est envoyée..
    Je pense qu'il y a un problème de rafraichissement de l'affichage, en VB6 il y avait doevents, y a t'il quelque chose du même genre en c#*?

Discussions similaires

  1. ProgressBar sans Thread ?
    Par RR instinct dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 27/07/2007, 16h54
  2. Timer,Thread et barre d outil
    Par jhdscript dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/11/2006, 13h20
  3. Réponses: 1
    Dernier message: 09/08/2006, 17h04
  4. [vb2005]Progressbar et thread
    Par stargates dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/06/2006, 08h38
  5. [Info]Sequenceur fiable: Timers, Threads
    Par vienin dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 15/07/2005, 01h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo