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 :

modifier Item d'une List(of T)


Sujet :

VB.NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Points : 154
    Points
    154
    Par défaut modifier Item d'une List(of T)
    Bonjour à tous!

    J'ai une structure comme type d'une List(of T). Je dois modifier la valeur d'un champ de la structure. J'ai écrit la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prptListOfPages.Item(numPage).nAgrandi = NumericUpDownZoom.Value
    Mais VB 2008 ne la valide pas. Il affiche que prptListOfPages.Item(numPage).nAgrandi "est une valeur et ne peut pas être la cible d'une assignation"

    Les items List(of T) sont bien modifiables? Si oui, de quelle façon?

    Merci!
    Avec mes sincères salutations,
    Paul Van Walleghem

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 155
    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 155
    Points : 25 074
    Points
    25 074
    Par défaut
    le problème ne vient pas du list of mais de ce que tu as mis dedans

    le détail de cette classe ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Points : 154
    Points
    154
    Par défaut
    1 La struture est définie ainsi:
    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
     
     
    ''' <summary>
    ''' Contient toutes les pages du livre lu
    ''' </summary>
    ''' <remarks></remarks>
     
    Public Structure ReadindPages
        Dim nInventaire As Integer
        Dim nNumPage As Integer
        Dim nNumSignet As Integer
        Dim PageBMP As Bitmap
        Dim nMhaute As Integer
        Dim nMgauche As Integer
        Dim bSaveMarges As Boolean
        Dim nAgrandi As Integer
        Dim bSaveAgrandi As Boolean
    End Structure
    2 Je déclare la List (Of T):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Dim ListOfParentPages As New List(Of ReadindPages)
     
        Public Property prptListOfPages() As List(Of ReadindPages)
            Get
                Return ListOfParentPages
            End Get
            Set(ByVal value As List(Of ReadindPages))
                ListOfParentPages = value
            End Set
        End Property
    Y vois-tu un problème?
    Paul Van Walleghem

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    C'est parce que ReadindPages est une structure et non une classe. Lorsque tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prptListOfPages.Item(numPage).nAgrandi = NumericUpDownZoom.Value
    Cela revient à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ReadindPages rp = prptListOfPages.Item(numPage);
    rp.nAgrandi = NumericUpDownZoom.Value
    Si ReadindPages est une classe (type référence) pas de problème. Modifier la variable rp modifiera prptListOfPages.Item(numPage). Il s'agit du même objet. Par contre avec une structure (type valeur) c'est différent. Modifier la variable rp ne modifiera pas prptListOfPages.Item(numPage).

    Le compilateur empêche donc de faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prptListOfPages.Item(numPage).nAgrandi = NumericUpDownZoom.Value
    lorsque l'on utilise un type valeur, car l'objet ne serait pas modifié contrairement à ce que laisse penser la commande.

    Passe ta structure en classe sinon il faudra faire quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prptListOfPages.Item(numPage) = new ReadindPages(...)
    On rencontre la même chose lorsque le veut modifier la position de contrôles en WinForm avec par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monControle.Location.X = 10
    Le compilateur ne l'accepte pas pour les mêmes raisons que ci-dessus. Control.Location renvoyant un objet de type System.Drawing.Point qui est un type valeur.

    Il faut passer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monControle.Location = new Point(10, monControle.Location.Y)
    Pas de questions techniques par MP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Points : 154
    Points
    154
    Par défaut

    Merci beaucoup pour tes explications
    A+,
    Paul Van Walleghem

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

Discussions similaires

  1. Dev infopath pour modifier 1 item d'une liste et plusieurs items d'une autre liste
    Par Nico2010 dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 19/04/2012, 16h30
  2. Sélectionner un item d'une list view
    Par Coussati dans le forum Composants VCL
    Réponses: 4
    Dernier message: 14/02/2006, 22h16
  3. Se positionner sur un item d'une liste déroulante
    Par pyxosledisciple dans le forum IHM
    Réponses: 1
    Dernier message: 08/02/2006, 20h19
  4. Selectionner automatiquement un item dans une liste
    Par nebule dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/12/2004, 17h03
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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