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

Windows Forms Discussion :

(encore.) référence objet non définie à une instance d'objet.


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Par défaut (encore.) référence objet non définie à une instance d'objet.
    bonsoir à tous,
    je sais je sais ,encore un pauvre type qui ne comprend pas que ce problème a été posté des milliers de fois

    Oui mais voilà, j'y arrive toujours pas, et vu la complexité (pour un débutant) de mon code, je n'arrive pas à comprendre pourquoi ça ne marche pas...

    Alors le topo de mon appli vite fait (façon de parler ):

    mon appli :
    • 1 datagridview "dataGridView3" contient 2 colonnes de données (dates et prix);
    • 1 graphique ChartFX qui lie en boucle le DGV3 (toutes les rows) et affiches des jolis points ;
    • Seulement suite à un changement de plan, je vais créer un nouveau datagridview nommé "dataGridViewInvis" qui contiendra les prix et dates du datagridview3 mais pour un mois d'une année donnée (via combobox).


    Avant tout marchait niquel, mais quand j'ai créer mon nouveau DGV, comme tous les autres, drag and drop sur ma form, je la place, je vais dans propriétés : visible = false, et je change dans mon code du graph:

    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
    private void CreerGraphique()
            {              
                //On récupère les variables utiles au graph            
                int num = dataGridViewInvis.RowCount;   //avant: int num = dataGridView3.RowCount;
                double ymax = 0;
                
                #region ParamCGraph            
                #endregion            
                                     
                //boucle de lecture des lignes du datagridview pour la définition des points
                for (int i = num - 1; i >= 0; )
                {                
                    string date = (string)dataGridViewInvis.Rows[i].Cells[0].Value.ToString();   //avant: dataGridView3
                    double prix = (double)dataGridView3.Rows[i].Cells[1].Value;        //avant: dataGridView3        
    
                    CGraph.Value[0, i] = prix;
                    CGraph.Legend[i] = date;
                    i--;
                    
                    //mise à jour de la valeur max pour une optimisation de la vision du tableau
                    if (prix > ymax)
                    {
                        ymax = (prix + ((20/100)*prix));
                        CGraph.AxisY.Max = ymax;
                    }
                }
    
                //fermeture des données du graph
                CGraph.CloseData(COD.Values);
                CGraph.RecalcScale();
            }
    Et j'ai l'erreur là.
    Alors j'ai fouillé: google, faq, forums, msdn, et je sais que le problème apparement c'est que mon datagridview "Invis" n'est pas créé (mais instancié, c'est ça?)

    Et donc j'ai regardé le code Designer, et tout le code correspondant à dataGridViewInvis est pareil que les autres dont le datagridview3 initialement à sa place. No comprendo!

    Quelqu'un pourrait m'aider et m'expliquer svp?
    Merci d'avance!

  2. #2
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    Cette erreur signifie que tu essayes d'accéder à un objet qui n'a pas encore été instancié! sur quelle ligne le code bug?

  3. #3
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    double prix = (double)dataGridView3.Rows[i].Cells[1].Value;

  4. #4
    Membre confirmé Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Par défaut
    le code bug sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     string date = (string)dataGridViewInvis.Rows[i].Cells[0].Value.ToString();
    Et je n'ai pas changé la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double prix = (double)dataGridView3.Rows[i].Cells[1].Value;
    car si la première ne marche pas la 2e non plus... (pour être sûre j'ai quand même testé...).

    Cette erreur signifie que tu essayes d'accéder à un objet qui n'a pas encore été instancié!
    Oui, mais l'objet c'est bien mon datagridview "dataGridViewInvis"? Pourtant pour l'instancier, un drag and drop suffit non? Dans mon application j'ai en tout sans celui là 4 DatagridView, et jamais eut de problèmes! Je le drop sur la form tout simplement, et je fais comme j'ai fait avec le "Invis", je balance des données dessus, et là pourquoi il me sort cette erreur?

    Pour le problème de non instanciation, j'ai ajouté tout au début de mon code:
    DataGridView dataGridViewInvis = new DataGridView
    , rien...puis j'ai copié collé cette ligne dans ma méthode (le code que j'ai mis en premier post), rien... et dans le designer le datagridview est bien présent partout!

    Pouvez vous m'expliquer?

  5. #5
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Je suis pas un expert en c#, mais il manque pas quelque chose dans la déclaration de ta boucle ?

    ...Une décrémentation de variable i, par exemple ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (int i = num - 1; i >= 0; )

  6. #6
    Membre confirmé Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Par défaut
    Citation Envoyé par Kelpan Voir le message
    Je suis pas un expert en c#, mais il manque pas quelque chose dans la déclaration de ta boucle ?

    ...Une décrémentation de variable i, par exemple ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (int i = num - 1; i >= 0; )
    non l'incrémentation est dans le code à la fin, ça ne change rien.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/01/2013, 12h11
  2. Réponses: 4
    Dernier message: 14/04/2010, 08h47
  3. Réponses: 5
    Dernier message: 05/03/2010, 18h49
  4. La référence d'objet n'est pas définie à une instance d'objet
    Par Delphi-ne dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2009, 14h22
  5. Réponses: 20
    Dernier message: 13/08/2007, 16h11

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