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

C# Discussion :

probléme variable class dans usercontrol [Débutant]


Sujet :

C#

  1. #1
    Invité
    Invité(e)
    Par défaut probléme variable class dans usercontrol
    Bonjour, j'ai une variable public dans une class que j'ai initialisé à 0.1 (parce qu'elle prends toujours 0 si je l'initialise pas), mais elle ne prends sa valeurs réel que dans la méthode Fillmaindata,

    Pièce jointe 473339

    je veux la tracer dans un chart qui existe dans un usercontrol : voila mon code

    Pièce jointe 473341

    le probléme c'est qu'elle me prends toujours la valeurs de 0.1 ,et non pas la valeur qui m'intéresse à l'intérieur de la méthode

    Nom : Capture.JPG
Affichages : 137
Taille : 24,6 Ko

    vous avez pas une idée sur comment je peux faire ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Je n'arrive pas à accéder à ton code.
    Toutefois, de ce que je vois, ce qui me paraît le plus logique c'est que tu travailles avec 2 instances de ton objet. Une instance a exécuté la méthode d'initialisation et l'autre pas.
    Maintenant, si tu dois absolument initialiser la valeur de cette propriété, pourquoi ne pas appeler la méthode dans le constructeur de ton objet ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Bonjour,

    Je n'arrive pas à accéder à ton code.
    Toutefois, de ce que je vois, ce qui me paraît le plus logique c'est que tu travailles avec 2 instances de ton objet. Une instance a exécuté la méthode d'initialisation et l'autre pas.
    Maintenant, si tu dois absolument initialiser la valeur de cette propriété, pourquoi ne pas appeler la méthode dans le constructeur de ton objet ?

    j'ai besoin de la variable qui est dans la méthode et non pas la méthode elle même , tu peux m'expliquer un peu plus stp ?


    code user control (chart)
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     _6Dof objsexdof2 = new _6Dof();
            public Chart1()
            {
                InitializeComponent();
            }
            private int nbPointAffiches = 100;
            private DateTime TheDateTimeNow = DateTime.Now;
     
            private void SetupSeries()
            {
                for (int iplot = 0; iplot < this.chart3.Series.Count; iplot++)
                {
                    Series ser = this.chart3.Series[iplot];
                    ser.ChartType = SeriesChartType.FastLine;
                    //ser.Color = Color.Red;
                    ser.XValueType = ChartValueType.DateTime;
                }
            }
     
            private void Chart1_Load(object sender, EventArgs e)
            {
                this.chart3.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";
                //  this.chart1.ChartAreas[0].AxisY.Minimum = 10;
                //    this.chart1.ChartAreas[0].AxisY.Maximum = 1000;
                SetupSeries();
                timer1.Start();
            }
     
            private void timer1_Tick(object sender, EventArgs e)
            {
                for (int iplot = 0; iplot < this.chart3.Series.Count; iplot++)
                {
                    if (this.chart3.Series[iplot].Points.Count > nbPointAffiches)
                    {
                        this.chart3.Series[iplot].Points.RemoveAt(0);
                    }
     
                    else // sinon on insere le suivant
     
     
                    {
                        // incrementation  var TheDateTimeNow
                        TheDateTimeNow = TheDateTimeNow.AddSeconds(30);
     
     
                        // nouveau point
                        Random r = new Random();
                        double pitch_Col2r = objsexdof2.pitch_Col2r;
                       double roll_Col2r = r.Next(10, 1000);
     
                        DataPoint newPt = new DataPoint();
                        newPt.XValue = objsexdof2.TheDateTimeNow.ToOADate();
                        newPt.YValues[0] = objsexdof2.pitch_Col2r;
                        this.chart3.Series[0].Points.Add(newPt);
                        DataPoint newPt2 = new DataPoint();
                        newPt2.XValue = objsexdof2.TheDateTimeNow.ToOADate();
                        newPt2.YValues[0] = roll_Col2r;
                        this.chart3.Series[1].Points.Add(newPt2);
     
                    }
                }
            }

    Code Class ou se trouve la variable

    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
    class _6Dof
        {
            Random r = new Random();
            Connection_Sql ObjConnectionSQL = new Connection_Sql();
            public DateTime TheDateTimeNow = DateTime.Now;
            Registres_6dof registresix = new Registres_6dof();
     
            public double pitch_Col2r = 0.1;
     
            //// affichage Table datagridview
     
            public void FillMainTable(int index)
            {
                registresix.sixDof_Data.Clear();
                registresix.imputregistre();
     
                double pitch_Col2r = r.Next(10, 1000);
     
     
                string ClassName = "Sexdof";
                TheDateTimeNow = DateTime.Now;
                Home.dtMain.Rows.Add(new Object[] { ++index, "Pitch_Col2", pitch_Col2r, DateTime.Now, ClassName });
                ObjConnectionSQL.InsertIntoDB(index, "Pitch_Col2", pitch_Col2r.ToString(), TheDateTimeNow, ClassName);
     
            }
        }
    }

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Citation Envoyé par magmaaka Voir le message
    Bonjour, j'ai une variable public dans une class
    Les variables public on va éviter, il vaut mieux ne les exposer que par des propriétés.

    Citation Envoyé par magmaaka Voir le message
    que j'ai initialisé à 0.1 (parce qu'elle prends toujours 0 si je l'initialise pas)
    Quel intérêt tant que tu ne l'utilises pas ?

    Citation Envoyé par magmaaka Voir le message
    le probléme c'est qu'elle me prends toujours la valeurs de 0.1 ,et non pas la valeur qui m'intéresse à l'intérieur de la méthode
    Pas clair. C'est la variable que ne prend pas la bonne valeur ou c'est dans le UseControl que la valeur affichée n'est pas bonne ?

    Citation Envoyé par magmaaka Voir le message
    vous avez pas une idée sur comment je peux faire ?
    Ça dépend de la réponse à la question précédente. Si tu veux faire en sorte que l'affichage soit mis à jour à chaque fois que la valeur de la variable est modifiée le plus simple est de passer par l'implémentation de l'interface INotifyPropertyChanged ; mais avec une interface graphique il faudra probablement ensuite aborder le sujet des Thread.
    Sinon il faut nous donner plus de précisions.

  5. #5
    Invité
    Invité(e)
    Par défaut Inutile de citer le message précédant, cela alourdit la lecture.
    Comment puis-je avoir accés à la variable de mon class dans le usercontrol sans la déclarer public ? Existe-t-il une autre facon de le faire ? si je réussis à y avoir accés dans le usercontrol tout le reste sera réglés automatiquement
    Dernière modification par rv26t ; 10/05/2019 à 21h13.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par magmaaka Voir le message
    Aucune réponse :/
    Le type d'impatience qui peut en agacer plus d'un surtout à l'heure du déjeuner.

    Concernant la visibilité de ta variable, ce qu'indiquait Noxen c'est qu'on évite de rendre une variable public. Transforme ta variable en propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public double pitch_Col2r {get; set;}
    Ton problème vient du fait que ta variable pitch_Col2r est redéclarée en variable locale dans ta méthode. C'est la variable locale que tu mets à jour. Dans la méthode FillMainTable, supprime le mot clé Double devant le nom de la variable pitch_Col2r.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui c'est ce que j'ai essayé

    Nom : Capture2.JPG
Affichages : 108
Taille : 30,9 Ko

    Mais ça prends toujours la valeur 0
    Nom : Capture.JPG
Affichages : 125
Taille : 55,6 Ko
    Dernière modification par rv26t ; 10/05/2019 à 21h09. Motif: Inutile de citer le message précédant, cela alourdit la lecture.

  8. #8
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Si tu n'appelle pas objsexdof2.FillMainTable() la propriété objsexdof2.pitch_Col2r restera à 0.
    C'est aussi bête que cela.


    Et ce genre de message...
    Citation Envoyé par magmaaka Voir le message
    Aucune réponse :/
    Nous avons tous une vie et elle ne consiste pas à être à ton entière disposition !

  9. #9
    Invité
    Invité(e)
    Par défaut
    et pourquoi si arrogant , c sérieux ! on a tous cette vie dont tu parles, et j'ai demandé à personne d’être à mon entière disposition, quelle mentalité de *****
    Dernière modification par rv26t ; 10/05/2019 à 21h11. Motif: Inutile de citer le message précédant, cela alourdit la lecture. Merci de rester courtoise.

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par magmaaka Voir le message
    et pourquoi si arrogant , c sérieux ! on a tous cette vie dont tu parles, et j'ai demandé à personne d’être à mon entière disposition, quelle mentalité de merde
    Houla !! Restons calme et courtois. Nous sommes sur un forum de développement pro, pas dans une cours de récré ! Si tu veux obtenir de l'aide, ce n'est pas avec ce genre de comportement et de propos que tu l'obtiendras.

    Maintenant pour revenir à ton problème, il faudrait que tu montre le code qui instancie ton objet objsexdof2 et que tu indiques où tu appelles la fameuse méthode FillMainTable().

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Houla !! Restons calme et courtois. Nous sommes sur un forum de développement pro, pas dans une cours de récré ! Si tu veux obtenir de l'aide, ce n'est pas avec ce genre de comportement et de propos que tu l'obtiendras.

    Maintenant pour revenir à ton problème, il faudrait que tu montre le code qui instancie ton objet objsexdof2 et que tu indiques où tu appelles la fameuse méthode FillMainTable().
    ----
    Le probléme est réglé après l'appel de la méthode FillMainTable()
    je vous remercie

  12. #12
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Tu postes un message à 11h46 (qui est légitime).
    Mais tu reviens une demi heure après (33 min.) pour poster je cite : "Aucune réponse :/".
    Ce genre de message ne fait pas avancer le problème et a tendance à agacer...
    Et je ne suis pas le seul à t'avoir fait la remarque !

    Tu noteras au passage, que bien qu'ayant effectivement été agacé par ton manque de patience et de civisme, je t'ai quand même fourni un indice pour que tu puisse résoudre ton problème.
    Ce à quoi tu as répondu en postant un autre message inutile, je cite : "up up" puis un deuxième où tu as pris 22 minutes de ton temps uniquement pour m'insulter au lieu de tester ce que je t'ai proposé.

    Alors maintenant, on arrête les gamineries, on grandit un peu et on commence un dialogue constructif comme des professionnels .
    Et pour commencer, l'appel à objsexdof2.FillMainTable() résout-il ton problème ?

    Edit :
    Le temps d'écrire ce message, ebastien m'a devancé
    J'ai vu au passage, que ça t'avais effectivement aidé et c'est pour cela que nous somme tous membres de ce forum (pour l'entraide).
    Je vais rajouter (même si peut me faire paraître arrogant à tes yeux) que si nous faisons de telles remarques (même celles qui consiste à les reprendre quand ils se montrent impatients), c'est pour aider les gens à s'améliorer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Question de débutant : Problème de classes dans un autre fichier
    Par amelyfred dans le forum Général Python
    Réponses: 4
    Dernier message: 17/06/2015, 12h00
  2. [2.x] problème variable session dans twig
    Par Viduc dans le forum Symfony
    Réponses: 13
    Dernier message: 02/10/2014, 08h17
  3. Problème variable numérique dans requête
    Par Tybaal dans le forum PL/SQL
    Réponses: 7
    Dernier message: 27/01/2012, 18h31
  4. [C#]Problème avec ToolboxBitmap dans usercontrol
    Par ClaudeBg dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/02/2010, 15h44
  5. [Spip] Problème variable PHP dans boucle
    Par Nicolas.S dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/06/2009, 10h31

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