Erreur "La référence d'objet n'est pas définie à une instance d'un objet." [Résolu]

bikini42 41 Messages postés jeudi 5 janvier 2006Date d'inscription 11 juin 2010 Dernière intervention - 25 avril 2007 à 14:13 - Dernière réponse : bikini42 41 Messages postés jeudi 5 janvier 2006Date d'inscription 11 juin 2010 Dernière intervention
- 27 avril 2007 à 09:33
Bonjour,

Après moultes tentatives de passages de variables, j'avais trouvé cette technique qui semblent fonctionner, mais j'obtiens une erreur qui me dit:

"L'exception NullReferenceException n'a pas été gérée. La référence d'objet n'est pas définie à une instance d'un objet."

Pour le moment j'ai ceci en code:
Affichage_Image

maform2;

public
string Code;
public

string CodeStim;

public
void setform(
Affichage_Image blabla2){maform2 = blabla2;}

Et plus loin, j'utilise la valeur maform2.Code en faisant:
donnees1[n].CodeStim = maform2.Code;

Et Code est déclaré et utilisé dans la Forme Affichage_Image, et varie à l'intérieur de cette Forme au cours du temps.

Savez-vous comment résoudre cette erreur?

Merci de me dire si vous connaissez un moyen simple de résoudre ça car j'ai tenté plein de méthodes pr passer des variables et c'est la seule qui semble être possible.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 26 avril 2007 à 14:20
3
Merci
Là, tu code la méthode setform, mais quand l'utilises-tu ?
Si tu ne l'utilise jamais, le programme ne passe jamais dedans, et c'est normal que maform2 soit null.

Amicalement, SharpMao

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de SharpMao
Meilleure réponse
bikini42 41 Messages postés jeudi 5 janvier 2006Date d'inscription 11 juin 2010 Dernière intervention - 27 avril 2007 à 09:33
3
Merci
Houraaaaa j'ai trouvé!!!

Il se trouve que Affichage_Image était elle-même initialisée par une Forme principale (qui initialisait Enregistrement ET Affichage_Image) et donc, en faisant ce que je faisais, je mettait à zéro mes données aux yeux de la Forme principale après qu'elle ait appelé les fonctions.

J'ai donc réussi à bidouiller mon code pour que les initialisations se déroulent en même temps afin de ne eprdre aucun données.

En tout ca,s j'aurais pas trouvé ça sans toutes vos aides, qui m'ont mis la puce à l'oreille sur certains points de mon code.

Donc vraiment merci à tout le monde !!!!!

;)

Merci bikini42 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de bikini42
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 25 avril 2007 à 15:35
0
Merci
Hello,

Si ton erreur vient bien de la ligne  : donnees1[n].CodeStim = maform2.Code;
C'est soit que donnees1[n] est null, soit que myform2 est null.

Amicalement, SharpMao
Commenter la réponse de SharpMao
bikini42 41 Messages postés jeudi 5 janvier 2006Date d'inscription 11 juin 2010 Dernière intervention - 25 avril 2007 à 15:39
0
Merci
Oui je confirme que c'est cette ligne qui est surlignée, l'erreur est bien sur la ligne:

donnees1[n].CodeStim = maform2.Code;

Cependant, je ne sais pas comment corriger cette erreur, car Code est bien déclaré et maform2 également (enfin d'après ce que je pense).

Je les ai déclaré comme je l'ai marqué dans mon premier message.

Savez-vous comment remédier à cette erreur?
Commenter la réponse de bikini42
TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention - 25 avril 2007 à 22:52
0
Merci
Déclaré ne veut pas dire pas instancié. Bien sûr que c'est déclaré sinon ca ne compilerait pas. Maintenant comme t'as dit sharpmao soit maform2 est null soit donnees1.

::|The S@ib|:: MVP C#.NET
Commenter la réponse de TheSaib
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 26 avril 2007 à 08:07
0
Merci
Hello,

Le moyen le plus simple de déterminer ce qui est null est le suivant :

tu mets un breakpoint à la ligne concernée, et tu vérifies si donnees1[n] ou maform2 est null.

Comme l'as dit TheSaib, il ne faut pas confondre déclaré et instancié.

Si tu fait

public string Code;
c'est équivalent à
public string Code = null;
et différent de
public string Code = "";

La même chose est valable avec des objets plus complexe
Affichage_Image test = new Affiche_Image();

Amicalement, SharpMao
Commenter la réponse de SharpMao
bikini42 41 Messages postés jeudi 5 janvier 2006Date d'inscription 11 juin 2010 Dernière intervention - 26 avril 2007 à 11:01
0
Merci
Merci à tous pr vos réponses!


 


J'ai donc vu que le souci venait de ce pb de "null". Mais si je réalise un:


if (maform2 == null)


{ maform2 = new Affichage_Image();}


Cela fonctionne, je n'ai plus d'erreur, mais je perd les valeurs des variables qui ont varié dans Affichage_Image....ce qui m'embete puisque mon but est de récupérer les valeurs des variables de Affichage_Image() et de les utiliser dans l'autre Form...

Je suis totalement perdu...
Commenter la réponse de bikini42
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 26 avril 2007 à 12:50
0
Merci
Attention encore,

Il ne faut pas confondre classe (Affichage_Image)
et instance (maform2)

Tu ne peux pas utiliser de variables dans une classes, (sauf si elles sont static, mais c'est une autre histoire)
par contre tu peux les utiliser dans une instance de cette classe.

Juste par curiosité, comment fais-tu l'appel à la méthode SetForm ?

Amicalement, SharpMao
Commenter la réponse de SharpMao
bikini42 41 Messages postés jeudi 5 janvier 2006Date d'inscription 11 juin 2010 Dernière intervention - 26 avril 2007 à 13:24
0
Merci
Et bien je le fais en codant :

public void setform(Affichage_Image blabla2)
        {
            maform2 = blabla2;
        }   

C'est incorrect? Mon pb peut venir de là?
Commenter la réponse de bikini42
bikini42 41 Messages postés jeudi 5 janvier 2006Date d'inscription 11 juin 2010 Dernière intervention - 26 avril 2007 à 14:27
0
Merci
Dans mon Affichage_Image, j'ai codé:

Enregistrement enreg2 = new Enregistrement();

et ensuite: enreg2.setform(this);

Il manque quelque chose? Il y a une erreur?
Commenter la réponse de bikini42

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.