Object reference not set to an instance of an object.

Résolu
cs_mastoc Messages postés 26 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 3 mars 2009 - 23 janv. 2008 à 12:07
mohamed1919 Messages postés 1 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 juin 2008 - 5 juin 2008 à 09:55
Bonjour,


Je travail sur Visual 2005. J'ai créé un contrôle personnalisé que je
peux réutiliser dans mes divers projets C#. Ce contrôle est divisé en 2
classes :

> ButtonPopUp qui permet de visualiser un bouton popUp,

> ButtonPopUpList qui gère une fenêtre popUp appelé lorsque
l'utilisateur appui sur le bouton. Elle gère en fait une ListView.


Tout les accés à ButtonPopUpList se font au travers de la classe ButtonPopUp.


C'est une variable membre de la classe ButtonPopUp qui me pose un
problème : "m_sSelectedElementName". Cette variable possède un
accesseur (avec un Get() et un Set()) qui me permet de savoir quel
élément est sélectionné dans la listView de la fenêtre popUp. Voici la
liste des variables membres et l'accesseur :


VARIABLES :
      /// <summary>

      /// Nom de l'élément sélectionné

      /// </summary>

      private string m_sSelectedElementName = "";


ACCESSEUR :
      /// <summary>

      /// Obtient le nom de l'élément sélectionné

      /// </summary>

      [

        EditorBrowsable(EditorBrowsableState.Never),

        Browsable (false),

      ]

      public string SelectedElementName

      {

        get { return m_sSelectedElementName; }

        set

        {

          // vérifie que l'élément se trouve bien dans la liste

          if (m_popUpList.ListItems.Contains(value))

          {

            // récupération du nom

            m_sSelectedElementName = value;


            // modification de l'élément sélectionné dans la fenêtre popup

            m_popUpList.ElementName = m_sSelectedElementName;


            // récupération de l'image

            m_iSelectedElementImage = m_popUpList.ElementImage;


            // changement de l'image sur le bouton

            if (m_iSelectedElementImage != null)

              buttonEditSymbol.BackgroundImage = m_iSelectedElementImage;

          }

        }

      }

Lorsque j'ajoute mon contrôle perso
ButtonPopUp dans une fenêtre d'un de mes projets via le Designer de
Visual il génère automatiquement le code dans un un fichier
"Designer.cs".

C'est normal jusque là sauf que lorsque je revient sur le Designer de cette fenêtre le message suivant apparaît :
Object reference not set to an instance of an object.

Il refuse donc de m'afficher la fenêtre.

Je retourne donc dans le "Designer.cs" pour voir
ce qui se passe et je vois que la ligne suivante apparait dans
l'initialisation du contrôle :

      this.buttonPopUpText.BackColor = System.Drawing.Color.Transparent;

      this.buttonPopUpText.Flat = System.Windows.Forms.FlatStyle.Standard;

      resources.ApplyResources(this.buttonPopUpText, "buttonPopUpText");

      this.buttonPopUpText.Name = "buttonPopUpText";

      this.buttonPopUpText.SelectedElementName = "";

      this.buttonPopUpText.ClickOnButtonEdit += new              System.EventHandler(this.buttonPopUpText_ClickOnButtonEdit);

      this.buttonPopUpText.NewselectionInPopUp += new System.EventHandler(this.buttonPopUpText_NewselectionInPopUp);


Si je supprime cette ligne pas de problème le projet démarre et la
popUp fonctionne. J'aimerais savoir pourquoi cette ligne apparait dans
le fichier "Designer.cs" ?


Comme vous pouvez le constater l'accesseur Set() effectue un certains
nombre d'opération. Est-ce celà qui pourrait poser des problème ?

Vive les Moutons !

Vive les Moutons !

5 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
23 janv. 2008 à 18:00
Hi,
Essaye de rajouter
[
DesignerSerializationVisibility(
DesignerSerializationVisibility.Hidden)]
comme attribute sur ta property.

<hr />
-My Blog-
3
cs_mastoc Messages postés 26 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 3 mars 2009
24 janv. 2008 à 09:18
Ok je vais essayer.

Sinon, en prenant un peu de recul j'ai remarqué que j'utilisait des doublons dans mes variables. En gros, la variable dont je parle dans mon premier poste et qui me permet de récupérer le nom de l'item séléctionné dans la listView est présente dans ButtonPopUp et dans ButtonPopUpList...

J'aurais dû le remarquer avant mais mieu vaut tard que jamais^^. Du coup je l'ai supprimé de ButtonPopUp.
ButtonPopUp est la seule à être instancier lorsque j'en ai besoin et elle me permet d'afficher un bouton appelant une fenêtre popUp. Au finale elle ne possède plus qu'un accesseur vers la variable de mon autre classe ButtonPopUpList  qui elle gère la fenêtre popUp et son contenu. C'est cette classe ButtonPopUpList qui va garder le nom d'item sélectionné.

Enfin bon, du coup j'ai plus de problème avec cette variable. Par contre je vais quand même essayer ta méthode. Je poste un message pour te dire si c'est la solution.

Dans tous les cas merci de ta réponse !

Vive les Moutons !
0
cs_mastoc Messages postés 26 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 3 mars 2009
24 janv. 2008 à 09:42
Ok c'est bon tout baigne !

Je rajoute une note au final^^ : J'ai raconté des bêtises sur mon poste juste au-dessus. Ca n'avait rien changé au problème. En fait c'est juste que hier soir j'étais fatigué et que j'étais trop content que cela "fonctionne"^^.

Bref, je sais pas trop ce qui m'a fait croire que tout baigné avec le nettoyage que j'avais effectué mais en tout la seule vrai méthode c'est la tienne Bidou !

Encore merci ;)

Vive les Moutons !
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
24 janv. 2008 à 10:07
De rien

<hr />
-My Blog-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mohamed1919 Messages postés 1 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 5 juin 2008
5 juin 2008 à 09:55
Bonjour, j'ai le meme probléme mais avec un autre fonctionnement, voila :

webBrowser1.Navigate(URL +

"/search?q=" + combo2.Text);===> sa fonctionne trés bien

WebBrowser wb =
new
WebBrowser();wb.Document.ExecCommand(

"SaveAs",
false,
"C:\test.html");===>c'est ici que le message d'erreur je le trouve 'Object reference not set to an instance of an object.'
le but est de copie le contenue du WebBrowser dans un fichier HTML .
Est-ce que vous pouvez m'aider.
0
Rejoignez-nous