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 :

Probleme d'Accession à Object


Sujet :

VB.NET

  1. #1
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut Probleme d'Accession à Object
    Salut All,

    Je n'arrive pas à acceder à une liste d'objets (qui existent) et qui provoque une exception


    La liste des objects sont dans un panel nomme Panel_EnQuestion, et les objects s'appelle : Label_Test_1, Label_Test_2, Label_Test_3, etc ... et sont dans des TableLayoutPanel specifiques avec des noms similaires : TLP_Test_1, TLP_Test_2, TLP_Test_3, etc ...
    Et j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For X = 1 To 10
           Panel_EnQuestion.Controls("Label_Test_" & CStr(X)).Text = "Bla Bla Bla"
    Next
    Qui provoque :
    L'exception System.NullReferenceException n'a pas été gérée.
    Message="La référence d'objet n'est pas définie à une instance d'un objet."

    Je pense que c'est les TLP qui rentrent en compte, mais je ne sais pas comment faire pour les appeller.
    J'ai essaye, mais que je n'arrive pas a faire : (qui marchera)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For X = 1 To 10
           TLP_Test_IcilaValeurdeX.Controls("Label_Test_" & CStr(X)).Text = "Bla Bla Bla"
    Next

    Merci pour votre aide.
    Danyel.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le message d'erreur est clair, l'objet nommé n'existe pas

    qu'appelles tu TLP ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Oui oui j'ai bien compris le message d'erreur.
    Il ne le trouve pas car il est dans un TLP (TableLayoutPanel)

    J'ai reussi a y acceder directement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For X = 1 To 10
      TLP_Test_1.Controls("Label_Test_1").Text = "Bla Bla Bla"
    Next
    Mais je ne sais pas comment faire pour remplacer les 1 par le X de la boucle.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si ton tlp est dans panel, tu peux faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panel.controls("xxxx" & x).controls("tlp_" & x).text

    je vois pas où tu bloques
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Oui sperot, ca je l'ai deja fait et vu (dans mon premier exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x.Controls("Label_Test_" & CStr(X)).Text = "Bla Bla Bla"
    Mon probleme, c'est pour le TLP qui contient aussi le 1.


    Edit
    Ah, je viens de voir ta modif. je vais voir si ok.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !
    Est-tu sûr que tes controls sont tous dans la TLP ?

    J'ai fait le test avec la boucle et les X, et ça marche.
    Par contre, au départ, ça plantait parce que je croyais que l'une des textboxX était dans le pannel, mais non...(alors que je les ai tous insérés graphiquement de la même manière)

    Par exemple, tente d'afficher dans un premier temps le TLP.controls.count

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  7. #7
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Alors voici comment faire sur les bases de sperot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For X = 1 to 10
         Panel_EnQuestion.Controls("TLP_Test_" & X).Controls("Label_Test_" & X).Text = "Bla Bla Bla"
    Next
    Je ne savais pas qu'on pouvait concatener plusieurs controls à la suite.
    Un immense merci sperot pour cette info


    pacmann
    Oui, mais le probleme etait qu'il n'y avait pas qu'1 seul TLP, mais autant que de donnees ... d'ou le probleme.

    Bonne Journee All.
    ++ Danyel.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  8. #8
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    J'ai une autre erreur lorsque j'utilise un picturebox avec la meme procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For X = 1 to 10
         Panel_EnQuestion.Controls("TLP_Test_" & X).Controls("PictureBox_Test_" & X).Visible = False
    Next
    avec l'erreur :
    La référence d'objet n'est pas définie à une instance d'un objet.

    Il doit y avoir une autre technique pour les picturebox ... mais j'ai pas trouve.
    Une idée ?
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    arrete d'halluciner, controls n'est qu'une propriété comme une autre, elle n'a rien de spécial
    le problème ne vient pas d'elle mais de ton code et de ton organisation dans ta form

    de plus un code propre devrait etre un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    try
    For X = 1 to 10
      dim tlp as control = Panel_EnQuestion.Controls("TLP_Test_" & X)
      if tlp is nothing then throw new applicationexception("tlp non trouvé")
     
      dim picturebox as control = tlp.controls("PictureBox_Test_" & X)
      if picturebox is nothing then throw new applicationexception("picrturebox non trouvé")
     
     picturebox.visible = false
    next
    catch ex as exception
    ' tracer l'erreur
    end try

    et puis pour savoir d'où vient l'erreur, les espions ca existe (le shift F9 aussi)
    tu peux regarder en mode debug avec un point d'arret ce que contient la collection controls donc voir où tu as fait une erreur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    En fait, c'etait une erreur de ma part sur une faute de frappe sur le nom du picturebox.
    Sinon merci pour ton code qui est interessant.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  11. #11
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Une derniere question sperot concernant les picturebox.
    - Que faire quand la propriete n'est pas membre de 'System.Windows.Form.Control' genre .image ?

    picturebox.image ... pour reprendre ton dernier exemple.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pas compris la question
    controls est une collection de control, et permet une recherche par nom
    image est une propriété non collection
    donc je vois pas le rapport ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    lol n'exagere pas
    Je vais essayer d'etre plus clair en reprennant ton exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try
    For X = 1 to 10
      dim tlp as control = Panel_EnQuestion.Controls("TLP_Test_" & X)
      if tlp is nothing then throw new applicationexception("tlp non trouvé")
      
      dim picturebox as control = tlp.controls("PictureBox_Test_" & X)
      if picturebox is nothing then throw new applicationexception("picrturebox non trouvé")
     
     picturebox.image = ...uneimage...
    
    next
    catch ex as exception
    ' tracer l'erreur
    end try
    Et bien, la propriete .image n'est pas reconnu avec une erreur : la propriete n'est pas membre de 'System.Windows.Form.Control'

    ???
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  14. #14
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ah ok, j'étais pas parti par là

    alors le code simple vu que tu sais que c'est un picturebox c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectCast(picturebox,System.Windows.Forms.Picturebox).Image = ...
    et si tu dois faire plusieurs choses avec le picturebox, déclare le as picturebox plutot qu'as control pour ne pas faire directcast plusieurs fois

    sinon le code propre il faut aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not TypeOf picturebox Is System.Windows.Forms.Picturebox Then Throw NewApplicationException ("Erreur impossible en théorie lol")
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Genial.
    Un grand merci sperot
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  16. #16
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pour info, DirectCast fait en partie comme CType

    ctype convertie un truc en un autre (si c'est possible, sinon erreur)

    directcast là meme chose mais seulement dans le cas d'héritage ou d'interfacage (et un poil plus rapidement que ctype)
    par exemple, picturebox hérite de control donc c'est bon
    (se rappeler aussi que tout hérite d'object)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. probleme "Cannot access a disposed object"
    Par the-morpher dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/06/2009, 16h52
  2. Probleme d'access a un object dans une VBox
    Par NeqO55 dans le forum MXML
    Réponses: 1
    Dernier message: 21/08/2008, 17h56
  3. Probleme sous Access 2002 avec un fichier Access 2000
    Par branqueira dans le forum Access
    Réponses: 1
    Dernier message: 14/10/2005, 17h43
  4. Direct Access Object sous Delphi
    Par eponette dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 14h33
  5. [Data Access Object]Intérêt de la factory ?
    Par le Daoud dans le forum Général Java
    Réponses: 2
    Dernier message: 21/04/2005, 09h06

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