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 :

arraylist et contains


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut arraylist et contains
    Bonjour


    Je vais essayer d’expliquer brièvement le contexte de mon problème : j’ai une classe Médecin, une classe Spécialité, une Arraylist de médecins (listemed) et une Arraylist de spécialités (listespe). Chaque médecin pratique au moins une spécialité. Ainsi, chaque instance de ma classe médecin possède un tableau contenant les spécialités pratiquées par le médecin considéré.

    Je voudrais afficher :
    - dans une listbox les noms des spécialités qu’il pratique (ça, pas de problème)
    - dans une autre listbox les noms du reste des spécialités, celles qu’il ne pratique pas afin que l’utilisateur puisse les faire basculer d’une listbox à l’autre.

    Le principe que je voudrais appliquer est le suivant : une fois un médecin sélectionné, on extrait du tableau chacune des spécialités qu’il pratique, et on efface un à un leur homologue dans la liste des spécialités restantes (qui est complète au départ). Voici une partie de mon code :

    ' on crée une nouvelle liste de spécialités, celles qui ne sont pas pratiquées par le médecin
    Dim listespedispo As New GestionSpec
    listespedispo.charge() ' au départ, elle contient toutes les spécialités : on la remplit à partir de la base de données
    Dim i As Integer ' compteur

    ' on crée une instance de Médecin à partir de la sélection effectuée dans la listview
    Dim med As New Medecin
    Try
    med = listemed.renvoieElement(indexmed)
    ' on parcourt le tableau du médecin considéré pour récupérer les spécialités qu'il pratique
    For i = 0 To med.nbspe – 1
    ‘ on crée alors une instance de Spécialité
    Dim special As New Specialite
    special = med.specialite(i)
    ' et on la retire dans la liste des spécialités restantes
    If listespe.Lspe.Contains(special) Then
    listespedispo.Lspe.Remove(special)
    Else
    MsgBox(med.specialite(i).leNom & " n'a pas été trouvée dans la liste de spécialités.")
    End If
    Next
    Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Erreur : ")
    End Try

    Le problème, c’est que l’instruction Remove ne supprime rien. J’ai alors essayé de rechercher la spécialité avec Contains pour vérifier d’abord si on la trouve, mais impossible de la trouver dans l’autre liste alors qu’elle y est, je l’ai vérifié. Je ne comprends pas pourquoi, j’ai pourtant vérifié que je comparais bien deux objets du même type : Spécialité, et c’est le cas.

    Je sèche, quelqu’un aurait une idée ??
    Merci d’avance…

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Par défaut
    je trouve que tu te casse la tete pour pas grand chose, perso, j'aurai rajouté un booléen dans ton tableau des specialités
    true = il pratique
    false = il ne pratique pas

    ainsi tu verifie les booléen du tableau pour remplir tes listes, et en cas de changement, tu ne modifie qu'un booléen.

    Je suis d'accord que ca ne fait pas vraiment objet, mais au moin c'est simple et clair...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Effectivement, mais ça m'obligerait à modifier pas mal de trucs maintenant.

    Finalement, j'ai trouvé une autre solution, avec une seule listbox en multiselect, qui contient toutes les spécialités. J'y sélectionne automatiquement celles qui sont pratiquées par le médecin en cours.

    J'utilise quand même un contains, mais qui fonctionne celui-là! En fait, je l'utilise sur la listbox et non plus sur l'arraylist :
    - je charge l'arraylist de spécialités et j'affiche les noms dans la listbox, normal jusqu'ici.
    - ensuite, je prends chaque spécialité du médecin, j'en extrais le_nom et je regarde si : listbox.items.contains(le_nom)

    Du coup, après modif ou pas, je peux récupérer les indexes sélectionnés dans la listbox, qui sont les mêmes que dans l'arraylist pour les traitements ultérieurs.

    J'espère que je suis assez clair...

    C'est un peu alambiqué mais je trouve que le résultat est sympa, visuellement. Non seulement ça marche mais au niveau ergonomie, ça m'arrange !!

    Merci quand même!

  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Par défaut
    n'oubli pas le tag resolu stp

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    oups, déso...

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

Discussions similaires

  1. object.equals et arraylist.contains ne marche pas
    Par bobby51 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 10/03/2009, 10h36
  2. ArrayList : pourquoi .Contains ne marche pas ?
    Par NeoGeoo dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 05/03/2009, 14h18
  3. ArrayList et contains()
    Par tanguy.L dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 17/03/2008, 09h16
  4. [ArrayList] contains() sur une liste de String
    Par nicotine002 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/01/2008, 19h19
  5. ArrayList -> méthode contains() (pour algo de Dijsktra)
    Par Jeff_as_jefferson dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 08/06/2007, 20h09

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