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 :

La référence d'objet n'est pas définie à une instance d'un objet


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut La référence d'objet n'est pas définie à une instance d'un objet
    bonjour,
    voila j ai repri le tp trouver sur internert, un formulaire doit etre complter pour créer une jungle representer par des rond circulaire dans un panel lorsque on appuie sur le bouton go.Mais voila j obtiens un message d'erreur:La référence d'objet n'est pas définie à une instance d'un objet a cette ligne:
    laJungle.dessiner(objGraphics);.

    Et quand j i donc instancier l objet graphic: objGraphics=new graphics mais maintenant il me dit de mettre un constructeur.
    Mais je ne sais pas vraiment ou le placer voici le script du formulaire sous visual studio c#:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace Proj_jungle
    {
        public partial class frmJungle : Form
        {//objet de la classe Graphics, permettant de dessiner la jungle
            jungle laJungle;
            Graphics objGraphics;
            public frmJungle()
            {
                InitializeComponent();
                objGraphics = picbJungle.CreateGraphics();
                pnAjoutCarni.Enabled = false;
                pnAjoutHerbivore.Enabled = false;
     
            }
     
            private void btnOk_Click(object sender, EventArgs e)
            {
                if (txtPays.Text != "")
                {//instanciation et initialisation de l'objet jungle
                    //laJungle = new jungle(txtPays.Text);
                    laJungle = new jungle();
                    laJungle.init(txtPays.Text);
     
                    pnJungle.Enabled = false;
                    pnAjoutCarni.Enabled = true;
                    pnAjoutHerbivore.Enabled = true;
     
                }
     
            }
            private void btnajoutcarni_Click(object sender, EventArgs e)
            {
     
                animal animal1;
                carnivore carni1 = new carnivore();
                if (txtajoutespececarni.Text != "" && txtAjoutNomCarni.Text != "")
                {//instanciation et initialisation de l'objet animal
                    //animal1 = new animal(txtNom.Text, txtEspece.Text);
                    animal1 = new animal();
                    //animal1.init(txtNom.Text, txtEspece.Text);
                    carni1.init(txtAjoutNomCarni.Text, txtajoutespececarni.Text, 10);
                    //carni1.affiche();
                    animal1 = carni1;
                    animal1.affiche();
     
                    txtajoutespececarni.Text = "";
                    txtAjoutNomCarni.Text = "";
                    txtAjoutNomCarni.Focus();
                    laJungle.ajouterAnimal(carni1);
                }
            }
     
     
     
            private void btnGo_Click(object sender, EventArgs e)
            {
                pnAjoutCarni.Enabled = false;
                pnAjoutHerbivore.Enabled = false;
     
                laJungle.dessiner(objGraphics);
                //afficher les infos des animaux
                laJungle.affiche();
                timer1.Start();
            }
     
            private void timer1_Tick(object sender, EventArgs e)
            {// à chaque exécution de cette procédure, on fait évoluer les animaux (ils vieillissent)
                laJungle.evoluer();
                laJungle.affiche();
                laJungle.dessiner(objGraphics);
     
            }
     
            private void btnAjoutHerbi_Click(object sender, EventArgs e)
            {
                animal animal1;
                herbivore carni1 = new herbivore();
                if (txtajoutespeherbi.Text != "" && txtajoutnomherbi.Text != "")
                {//instanciation et initialisation de l'objet animal
                    //animal1 = new animal(txtNom.Text, txtEspece.Text);
                    animal1 = new animal();
                    //animal1.init(txtNom.Text, txtEspece.Text);
                    carni1.init(txtajoutnomherbi.Text, txtajoutespeherbi.Text, 10);
                    //carni1.affiche();
                    animal1 = carni1;
                    animal1.affiche();
     
                    txtajoutespeherbi.Text = "";
                    txtajoutnomherbi.Text = "";
                    txtajoutnomherbi.Focus();
                    laJungle.ajouterAnimal(carni1);
                }
     
            }
     
            }
        }

    et voici la methode pour dessiner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void dessiner(Graphics MonGr)
         {
           MonGr.Clear(Color.Transparent);
           for (int i = 0; i < _lesAnimaux.Count; i++)
            {
               _lesAnimaux[i].dessiner(MonGr);
     
           }
     
         }

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par kate59 Voir le message
    Mais voila j obtiens un message d'erreur:La référence d'objet n'est pas définie à une instance d'un objet a cette ligne:
    laJungle.dessiner(objGraphics);
    Cela signifie donc que c'est ton objet "lajungle" qui n'est jamais instancié. C'est de ce côté que tu dois chercher
    ಠ_ಠ

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    non il a instancie j avais deja verifier regarder bien au debut du script que j ai mit on retrouve bien l instanciation de la jungle.

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par kate59 Voir le message
    non il a instancie j avais deja verifier regarder bien au debut du script que j ai mit on retrouve bien l instanciation de la jungle.
    J'ai bien peur d'avoir raison

    Ton Graphics est créé par cette ligne du constructeur de ta form :
    objGraphics = picbJungle.CreateGraphics();

    par contre ton objet laJungle est défini (par la ligne jungle laJungle; ), mais instancié uniquement dans la fonction btnOk_Click.

    Mets-toi en debug, exécute en pas à pas ton code, mets un point d'arrêt sur la ligne qui bugue, et tu verras vite quel est l'objet qui n'est pas initialisé.
    ಠ_ಠ

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    bonjour,
    merci de ton aide j ai réussi a faire fonctionner j ai bien maintenant les rond qui se promené dans le cadre mais voila il peuvent sortir du cadre et ils disparaissent donc du champ de vision y a t il un moyen pour qu' il reste dans le cadre.

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/09/2007, 10h38
  2. Réponses: 2
    Dernier message: 09/09/2007, 14h25
  3. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  4. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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