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 :

DirectCast sur élément ListBox [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut DirectCast sur élément ListBox
    Bonjour à tous,

    j'ai une ListBox dans laquelle j'insère des instances de cette classe :

    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
    Public Class clsItem
     
        Public Valeur As Integer
        Public Texte As String
     
        Public Sub New()
            Valeur = 0
            Texte = ""
        End Sub
     
        Public Sub New(ByVal NewValeur As Integer, ByVal NewTexte As String)
            Valeur = NewValeur
            Texte = NewTexte
        End Sub
     
        Public Overrides Function ToString() As String
            Return Texte
        End Function
     
    End Class
    J'affiche la propriété "Texte" dans la ListBox, et pour récupérer la propriété "Valeur" quand je
    clique sur un élément, j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim a As New clsItem
    a = DirectCast(Me.ListBox1.SelectedItem, clsItem)
    MessageBox.Show(a.Valeur.ToString)
    Tout fonctionne très bien.
    Mais je me suis rendu compte que si après la MessageBox j'insère par exemple :

    ça me change la valeur de l'objet dans la ListBox.

    Que faire pour obtenir une copie et non pas une "référence" de l'objet cliqué ?

    Merci d'avance :-)

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 203
    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 203
    Par défaut
    Dim a As New clsItem ici le new n'est pas utile, ca créé un clsItem, alors que tu veux juste déclarer une variable de ce type puis y stocker le selecteditem après.

    Après si tu veux modifier une copie de l'instance il faut faire une copie de l'instance (en recopiant toutes les propriétés une à une dans une nouvelle instance)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Merci pour la réponse Pol63 :-)

    De mon coté la seule manière que j'ai trouvé est de créer une fonction qui copie la classe en cours
    avec la méthode "Me.MemberwiseClone" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Clone() As clsItem
        Return DirectCast(Me.MemberwiseClone(), clsItem)
    End Function
    ça fonctionne, j'obtiens bien une copie. J'ai pas trouvé mieux pour l'instant.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 203
    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 203
    Par défaut
    ah oui memberwiseclone est la solution la plus simple
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [Débutant] [VB.NET] Double cliquer sur élément listbox [VB.NET]
    Par ziggy76 dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/02/2014, 19h53
  2. Réponses: 1
    Dernier message: 25/11/2010, 10h02
  3. Précision sur les ListBox
    Par SebRs dans le forum Windows
    Réponses: 5
    Dernier message: 04/05/2006, 16h38
  4. Clic sur élément d'une requete affiché
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/02/2006, 00h38
  5. Ajouter des éléments à ListBox
    Par priest69 dans le forum Access
    Réponses: 5
    Dernier message: 20/09/2005, 14h05

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