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 :

Récupérer un objet de winform1 dans winform2


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut Récupérer un objet de winform1 dans winform2
    Bonjour tout le monde
    Voici mon probleme :
    je possede un hashtable d'objets declarée dans winform1 comme propriete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Friend shared autorisations as new Hashtable
    Cette hashtable contient des objets de type Autorisation( ID, Value)
    dont la clé de chaque element Autorisation est ID.

    les clés du hashtable sont visibles via une liste, quand l'utilisateur selectionne un ID, un nouveau winform2 modal s'ouvre.

    en recuperant l'ID ( je le stocke dans une variable que je passe aussi a winform2) selectionné ainsi que HashTable autorisations dans winform2 je n'arrive pas a afficher Value de l'element selectionné à partir de ma Hashtable

    Je stocke l'ID dans une variable que je passe aussi a winform2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    friend ID as integer '( variable de winform1)
    ID = list.selectedValue
    voici comment je recupere hashtable et l'ID selectionné dans winform2:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ID2 as integer = winform1.ID
    Dim autorisations2 as new HashTable
    autorisations2 = winform1.autorisations
    en essayant d'afficher la valeur de l'ID recuperer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lbl_value.Text =  autorisations2(ID2).Value
    j'obtient le fameux message :
    NullReferenceException :
    La référence d'objet n'est pas définie à une instance d'un objet
    Merci de m'aider à regler mon probleme.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if autorisations2 is nothing then
      msgbox ("y a un truc qui cloche")
    end if
     
    if not autorisations2.contains(id2) then
      msgbox ("j'ai du rater un truc, et je programme en pensant que ca être bon mais sans vérifier à l'exécution")
    end if
    et au passage, le new sert à instancier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim autorisations2 as new HashTable
    autorisations2 = winform1.autorisations
    ici ca ne sert à rien d'instancier un new hashtable pour le mettre dans autorisations2 sachant que tu le recouvres pas une autre valeur

    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim autorisations2 as HashTable
    autorisations2 = winform1.autorisations
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if autorisations2 is nothing then
      msgbox ("y a un truc qui cloche")
    end if
     
    if not autorisations2.contains(id2) then
      msgbox ("j'ai du rater un truc, et je programme en pensant que ca être bon mais sans vérifier à l'exécution")
    end if
    et au passage, le new sert à instancier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim autorisations2 as new HashTable
    autorisations2 = winform1.autorisations
    ici ca ne sert à rien d'instancier un new hashtable pour le mettre dans autorisations2 sachant que tu le recouvres pas une autre valeur

    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim autorisations2 as HashTable
    autorisations2 = winform1.autorisations
    Merci d'avoir repondu,
    la valeur n'est pas recuprée si je fais le test que t'as mis

    je fais quoi alors ???

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    si tu n'as d'add pas l'élément dans la collection il n'y est pas ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    si tu n'as d'add pas l'élément dans la collection il n'y est pas ...
    je te comprends bien, mais en parcourant la hashtable avec for each
    j'arrive a recuperer toutes les valeurs ...

    as tu une solution plus pratique ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    non
    et je ne connais pas trop le hashtable, pourquoi as tu besoin d'un hashtable ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    non
    et je ne connais pas trop le hashtable, pourquoi as tu besoin d'un hashtable ?
    j'ai simplié l'objet autorisation dans le but de facilité la comprehesion du probleme

    puisque tu veux le savoir :

    l'objet Autorisation comporte un ID, val1, val2 et liste d'objets de type Ligne(id _ligne, destination, designation... + liste d'Objets localite (id, heure depart, heure d'arrivée ) )
    le recours un hashtable me facilite l'acces direct au contenu de l'objet Autorisation et donc de le modifier au cas ou existe sinon de l'ajouter sinon.

    chaque liste d'objet a sa propore interface graphique, et grace à la clé de la table je peux acceder directement a l'objet desiré

    au final, le traitement a faire doit etre effectuer a l'ensemble des objets sinon rien ne passera

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    je viens de regarder le hashtable, quand j'ai besoin d'un truc dans le genre je prend un collections.generics.dictionary(of T, T)
    ca permet de choisir le type de la clé et le type des objets

    au passage j'ai fait le test que je craignais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Dim d As Integer = 2
            Dim d2 As Long = 2
     
            Dim h As New Hashtable
            h.Add(d, Nothing)
            If Not h.Contains(d2) Then
                MsgBox("non")
            End If
    avec ce code le messagebox s'affiche, certes 2=2 mais ils n'ont pas le même type


    après je ne vais pas pouvoir t'aider plus, on a que 4 pauvres lignes de code ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Récupérer un objet se trouvant dans une autre fonction
    Par Shinochi dans le forum Débuter
    Réponses: 4
    Dernier message: 03/10/2010, 18h30
  2. Récupérer les objets non identiques dans deux arrays
    Par alouha dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 03/05/2010, 18h05
  3. récupérer un objet dans une liste chainée
    Par marsuwhite dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 14h05
  4. Réponses: 3
    Dernier message: 22/05/2006, 09h58
  5. Réponses: 1
    Dernier message: 05/05/2006, 14h37

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