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

VB.NET Discussion :

Le probleme classique: Object reference not set to an instance of an object.


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Par défaut Le probleme classique: Object reference not set to an instance of an object.
    Bonjour,

    J'ai cette erreur classique lorsque je click sur le bouton btnFitToScreen: "Object reference not set to an instance of an object." (NullReferenceException was unhandled)
    Et toujours le meme conseil: "Use the 'New' keyword to create an object instance."

    Je crois que je comprends le probleme, mais je ne sais pas comment le resoudre. Dans ma classe cdtPosterBase, l'Image est vide ("Nothing"), donc evidemment la propriete "m_OriginalImage.Width" n'a rien. Je pense qu'il y a peut-etre un probleme de declaration de variable ou purement un probleme de POO.

    Bref, si quelqu'un peut me dire ou se trouve le probleme, je serais ravi.

    J'ai simplifie le code de facon a pointer sur le probleme rencontre.

    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
     
    Public Class Form1
        Private cdtPB As cdtPosterBase
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ' Create a PictureBox (pbDemo) as cdtPosterBase
            Dim pbDemo As New PictureBox
            pbDemo.Image = My.Resources.Serge
            Me.SplitContainer.Panel2.Controls.Add(pbDemo)
            ' Assign pbDemo to the class cdtPictureBox 
            cdtPB = New cdtPosterBase(pbDemo)
        End Sub
     
        Private Sub btnFitToScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFitToScreen.Click
            cdtPB.FitToScreen()
        End Sub
    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
     
    Imports System.Drawing.Imaging
     
    Public Class cdtPosterBase
        Inherits PictureBox
     
        Public Shadows Property Image() As System.Drawing.Image
            Get
                Return m_OriginalImage
            End Get
            Set(ByVal Value As System.Drawing.Image)
                Dim r As New Rectangle(0, 0, Value.Width, Value.Height)
                m_OriginalImage = New Bitmap(Value)
                m_OriginalImage = DirectCast(m_OriginalImage.Clone(r, Imaging.PixelFormat.Format32bppPArgb), Bitmap)
                Me.Invalidate()
            End Set
        End Property
     
        Public Sub FitToScreen()
            Me.Origin = New Point(0, 0)
            ZoomFactor = Math.Min(ClientSize.Width / m_OriginalImage.Width, ClientSize.Height / m_OriginalImage.Height) ' MESSAGE D'ERREUR !
        End Sub
    Autre point important ou pas, ce probleme est aussi arrive depuis que j'ai voulu ajoute un ContextMenu dans la "Public Sub New" (voir ci-dessous).

    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
     
        Public WithEvents pbBase As PictureBox
        Private oCtxMenu As New ContextMenuStrip
        Private oToolStripItem1 As New ToolStripMenuItem
        Private oToolStripItem2 As New ToolStripMenuItem
     
        Public Sub New(ByVal cPictureBox As PictureBox)
            pbBase = cPictureBox
            oToolStripItem1.Text = "Info"
            AddHandler oToolStripItem1.Click, AddressOf ContextMenuHandler1_Click
            oCtxMenu.Items.Add(oToolStripItem1)
            ' IN SHORT=> oCtxMenu.Items.Add("Info", New System.EventHandler(AddressOf Me.ContextMenuHandler1_Click))
            oToolStripItem2.Text = "Delete"
            AddHandler oToolStripItem2.Click, AddressOf ContextMenuHandler2_Click
            oCtxMenu.Items.Add(oToolStripItem2)
            pbBase.ContextMenuStrip = oCtxMenu
        End Sub
    Bref, je dois faire quelquechose de travers (probleme de comprehension en POO?).

    Merci,
    JLuc01

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    si monObjet est null (ou Nothing en VB) alors monObject.attribut n'est pas seulement null ou vide, il est purement et simplement inaccessible et tenter d'y accéder lève la fameuse exception dont tu parles. Avant d'attaquer les attributs ou les méthodes d'un objet il faut donc vérifier que l'objet existe bien.

    Bon dev.

  3. #3
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Deux choses qu'il FAUT savoir.

    1) Tu n'attrapes pas les Exceptions.... Try Catch etc....
    Du coup, si dans ton constructeur par exemple, il y a une erreur, il va sortir de la fonction, ne va pas finir ce qu'il fait, voir va générer des trucs bizarres... ça peut même bloquer ton PC... Bref, gestion d'erreur.

    2) Tu peux trouver toi même d'où vient l'erreur... en 1 min, si si !!!
    Et tu utiliseras cette méthode toute ta vie d'informaticien, alors commence maintenant :
    -> tu mets un point d'arrêt sur la première ligne de ton constructeur. (tu cliques sur la marge, à gauche de la ligne en question, ça fait apparaître un point rouge) Le code va s'y arrêter quand il va y arriver.
    -> Puis en faisant F10 tu vas faire avancer le code, ligne par ligne : Le pas-à-pas.
    -> tu peux mêmes cliquer sur F11, pour rentrer dans les sous-méthodes.
    Et ainsi, tu va trouver LA ligne qui bug et corriger le problème.

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Je sais pas pour .NET mais en C avec VS suffit de lancer en mode debug, sans point d'arrêt, l'exécution s'arrêtera d'elle-même sur la ligne causant l'erreur. Ensuite en se baladant dans la pile d'appels (les contextes sont chargés à la volée) on peut retrouve pas mal de bugs sans trop de souci.

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Ca devrait, mais il faut souvent le paramétrer (je sais pas comment c'est par défaut)

    On peut même faire apparaître les "First Chance Exception" avant qu'elles n'arrivent.

    Pour configurer tout ça, suffit d'aller de sélectionner dans le Menu : Debug/Exceptions et cocher les bonnes cases.

  6. #6
    Membre confirmé
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Par défaut
    Bonsoir,

    Et merci pour les commentaires, mais pour l'instant, cela ne m'aide pas beaucoup.

    En premier, j'avais essaye de declarer ma variable avec le mot New: Private cdtPB As New cdtPosterBase, mais sans succes.
    Ainsi, je pensais que je pouvais l'utiliser dans toutes mes Sub. Et non, l'erreur est toujours la.

    jopopmk: Oui, l'objet ne doit pas etre declarer correctement. Je pense avoir compris ce probleme, mais je ne vois pas mon erreur. Je sais ou elle pose probleme: ligne 21 de "Public Class cdtPosterBase". Et bien sur, si l'objet n'est pas declare, tout ce qui depend de cet objet n'est pas accessible.

    mactwist69: Des Try Catch, j'en utilise de temps en temps, mais, probablement pas assez. Cependant, apres votre suggestion, j'ai mis un Try Catch dans le constructeur, comme ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Sub New(ByVal cPictureBox As PictureBox)
            Try
                pbBase = cPictureBox
                ...etc...    
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    End Sub
    Mais, en testant un point d'arret a different endroit, j'ai remarque, que cela ne passe meme pas dans ce constructeur, mais dans le "Sub New()" de base (default).
    Le mode Debug, je connais, meme si je n'utilise probablement pas son plein potentiel. Pour moi, comprendre les messages d'erreur, c'est aussi tout un art que je ne maitrise pas.

    Bref, soit l'erreur saute aux yeux (mais pas aux miens), soit je ne sais pas trop???
    Peut-on avoir ces 2 lignes ensemble? "Inherits PictureBox" ET "Public Sub New(ByVal cPictureBox As PictureBox)" ou bien je m'egare.

    Le seul indice que je retiens, c'est de chercher du cote du constructeur. Mais, je crois encore que le probleme vient de la declaration de mes variables.
    Bref (encore), je patauge...

    JLuc01

  7. #7
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Mais, en testant un point d'arret a different endroit, j'ai remarque, que cela ne passe meme pas dans ce constructeur, mais dans le "Sub New()" de base (default).
    C'est ça qui est ennuyeux ! (Grace au point d'arrêt, que tu as du mettre dans le constructeur).

    Mais quel autre constructeur ?
    Tu en a un "par défaut" ?

    Mets nous un peu plus de code peut etre

  8. #8
    Membre Expert
    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
    Par défaut
    Bonjour,
    Je pense qu'il y a simplement un problème de conception (au vu du code présenté) : La classe cdtPosterBase hérite de PictureBox et contient un membre public pbBase qui est lui-même un PictureBox.
    Il faudrait avant tout connaître l'objectif de cette classe cdtPosterBase car à mon avis, ce n'est pas la bonne solution.

  9. #9
    Membre confirmé
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Par défaut
    Bonjour,

    mactwist69: le constructeur par default, c'est celui qui n'est meme pas necessaire d'ecrire en theorie: Private Sub New() + End Sub
    Enfin, c'est ce que je crois.

    ebastien: Probleme de conception! Je crois que tu as pointe sur le probleme. Donc, je ne m'egarais pas dans mon dernier commentaire.
    Je regarde ca ce soir et je reviens avec plus d'explication si je n'arrive pas a resoudre ce probleme.

    Bref, je vous tiens au courant.

    Merci,
    JLuc01

  10. #10
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    mactwist69: le constructeur par default, c'est celui qui n'est meme pas necessaire d'ecrire en theorie: Private Sub New() + End Sub
    Enfin, c'est ce que je crois.
    Mais il est où dans le code que tu as donnés ?

    Et ou est la ligne où tu appelles le constructeur ?

    Il y a quelque chose de pas logique entre ce que décris, et le code que tu affiches.

  11. #11
    Membre confirmé
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Par défaut
    Bonjour,

    Je crois que j'ai un peu tout melange.

    Bon, j'ai re-ecrit le debut de ma Class Form1 comme ci-dessous:

    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
     
    Public Class Form1
        Private cdtPB As New cdtPosterBase
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            cdtPB.Location = New Point(0, 0)
            cdtPB.Dock = DockStyle.Fill
            cdtPB.BackColor = Color.SeaGreen
            cdtPB.Image = My.Resources.Serge
            cdtPB.SizeMode = PictureBoxSizeMode.AutoSize
            ' Add the PosterBase to the Panel
            Me.SplitContainer.Panel2.Controls.Add(cdtPB)
            Me.SplitContainer.Panel2.Controls.Add(cdtPB.HScrollBar1)
            Me.SplitContainer.Panel2.Controls.Add(cdtPB.VScrollBar1)
            ' No use of MouseWheel
            cdtPB.ZoomOnMouseWheel = False
        End Sub
     
        Private Sub btnFitToScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFitToScreen.Click
            cdtPB.FitToScreen()
            lblPixelSize.Text = cdtPB.ApparentImageSize.Width & " X " & cdtPB.ApparentImageSize.Height
        End Sub
    Et, ca marche avec le constructeur de base, que j'appelle aussi le constructeur par defaut (d'apres les commentaires de mactwist69, je ne suis pas sur d'utiliser la bonne terminologie).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Public Sub New()
        End Sub
    Constructeur de base, utilise comme ci-dessous dans la classe cdtPosterBase:

    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
     
    Imports System.Drawing.Imaging
     
    Public Class cdtPosterBase
        Inherits PictureBox
     
        ' Public Event
        Public Event SetScrollPosition()
        Friend WithEvents VScrollBar1 As New VScrollBar
        Friend WithEvents HScrollBar1 As New HScrollBar
     
        ' MEMBER VARIABLES
        ' Image used as PosterBase
        Private m_OriginalImage As System.Drawing.Bitmap
        ' Origin (Upper Left corner of the Image)
        Private m_Origin As New System.Drawing.Point(0, 0)
        ' Starting Point when drawing the Rectangle on Window mode
        Private m_StartPoint As System.Drawing.Point
        ' Drawing the Image
        Private g As Graphics
        Private SrcRect As System.Drawing.Rectangle
        Private DestRect As System.Drawing.Rectangle
        ' Zoom variables
        Private m_ZoomOnMouseWheel As Boolean = True
        Private m_ZoomFactor As Double = 1.0
        ' ImageSize on Screen
        Private m_ApparentImageSize As New Size(0, 0)
        ' Width & Height of Image
        Private m_DrawWidth As Integer
        Private m_DrawHeight As Integer
        ' Centre Point of the Image
        Private m_CenterPoint As Point
        ' Use of the 2 ScrollBars
        Private m_ScrollVisible As Boolean = True
     
        Public Sub New()
            '    ' Initialization USEFULL OR NOT ??? - TO CHECK MSDN -
            '    'Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
            '    'Me.SetStyle(ControlStyles.DoubleBuffer, True)
        End Sub
     
        Private oCtxMenu As New ContextMenuStrip
        Private oToolStripItem1 As New ToolStripMenuItem
        Private oToolStripItem2 As New ToolStripMenuItem
     
        Public Sub New(XXX?)
                pbBase = ??
     
                oToolStripItem1.Text = "Info"
                AddHandler oToolStripItem1.Click, AddressOf ContextMenuHandler1_Click
                oCtxMenu.Items.Add(oToolStripItem1)
                ' IN SHORT=> oCtxMenu.Items.Add("Info", New System.EventHandler(AddressOf Me.ContextMenuHandler1_Click))
                oToolStripItem2.Text = "Delete"
                AddHandler oToolStripItem2.Click, AddressOf ContextMenuHandler2_Click
                oCtxMenu.Items.Add(oToolStripItem2)
                pbBase.ContextMenuStrip = oCtxMenu
        End Sub
    Desole, j'ai laisse les declarations de variables et des commentaires pas tres utiles dans cette discussion.

    DONC, maintenant j'arrive a mon probleme initial (qui m'a conduit a faire un peu n'importe quoi).

    Je voudrais faire apparaitre un ContextMenu lorsque je clique sur la PictureBox.

    L'idee de base etait de le faire via un autre constructeur, et je crois maintenant que c'est stupide.
    Mais, je ne sais toujours pas comment m'y prendre, meme si cette discussion a eu le merite de remettre certaines idees en place.
    Ou alors, dois-je mettre ce contextMenu dans ma Form1? Ce qui serait dommage, car je trouvais pratique de le laisser dans la classe cdtPosterBase.

    En esperant avoir ete plus clair cette fois-ci.

    JLuc01

  12. #12
    Membre Expert
    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
    Par défaut
    Bonjour,

    Le problème vient de PbBase. La classe cdtPosterBase est déjà une PictureBox. A quoi sert PbBase ? Supprime le et affecte le ContextMenuStrip à ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ContextMenuStrip = oCtxMenu

  13. #13
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Je trouve que surcharger la classe PictureBox pour avoir les menus contextuelles, n'est pas une mauvaise idée.

    Sinon, dans les faits.

    1) Tu ne veux pas de constructeur vide (="de base"). Enfin, tu peux, mais ça ne sert à rien.

    Si tu appelles le constructeurs vide, tu peux bien faire ce que tu veux dedans, si après pour le même objet du appelles un deuxième constructeurs, ce qui a été fait sera supprimé... A chaque appel de constructeur, l'objet est réinitialisé.

    2) Très mauvaise idée, de déclarer une variable ET de l'initialiser en même temps :
    donc ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private cdtPB As New cdtPosterBase
    déclare le ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private cdtPB As cdtPosterBase
    Et dans le constructeur de Form1, LA, tu appelles le seul constructeur qui t'intéresse : Celui où tu lui passe l'image.


    3) Concernant ton constructeur, rien ne sert de passer en paramètre un PictureBox... C'est pas un Control que tu veux transmettre mais une image.
    Si je te demande de me donner une photo, tu ne me donnes pas le cadre en bois avec.
    Donc conseil suivant : ton constructeur devrait prendre en paramètre une image.
    Dans ce constructeur, tu va copier l'image du paramètre dans une variable locale image. Puis le placer dans ton picturebox.
    Beaucoup moins lourds, plus cohérent.


    4) Suggestion : Plutôt que de créer une classe qui surcharge PictureBox... Tu pourrais aussi créer un UserControl, qui ne contiendra qu'une picturebox, le menu contextuelle etc... Tout pareil, mais tu auras le visuel du control, tu pourras l'ajouter à la liste des controls disponible etc.
    Et ça ne changera presque rien au code : Tu auras toujours un constructeurs avec l'image en paramètre... Mais au lieu d'hérité de PictureBox, PictoreBox sera un objet de ta class UseControl... Quelque part se sera plus facile

  14. #14
    Membre confirmé
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Par défaut
    Bonsoir,

    Merci ebastien, le probleme est maintenant resolu. Pas beaucoup de texte dans tes messages, mais droit au but (2 fois).

    Merci aussi a mactwist69 pour tous les conseils. Je retiens les points 2 et 3.
    Note que le point 4 m'a fait sourire (je ne conteste pas tes arguments, ils sont surement tres bons). Mais, la classe que j'essaye de developper viens d'internet. Elle utilise un UserControl que je n'aimais pas trop (preferant tout centraliser dans une classe). Donc, apres bidouillages (enlever ce qui ne me plait pas et rajouter de nouvelles choses), je suis arriver a une classe "unique". Ce procede m'a permis aussi de comprendre certaines choses, meme si je ne suis pas encore au top.

    A+
    JLuc01

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/04/2008, 18h36
  2. new : Object reference not set to an instance of an object
    Par zulad dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/06/2007, 20h35
  3. Object reference not set to an instance of an object
    Par DjRusty dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2007, 07h26
  4. Réponses: 1
    Dernier message: 28/12/2006, 11h05
  5. Réponses: 1
    Dernier message: 20/04/2006, 12h09

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