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

Windows Forms Discussion :

recuperation d'un listview item


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut recuperation d'un listview item
    Bonjour,

    Voici une portion de code que j'ai du mal à bien comprendre
    Je vous explique : on a crée un dataset objDS2 qui contient le resultat de la requête suivante : SELECT ID_THES,LIBELLE_THESAURUS from THESAURUS;"

    On a crée un data adapter objDA2 qui va remplir le dataset objDS2 avec le resultat de cette requête.

    On a crée une listview que l'on a nommée lstThesaurus à laquelle on ajoute grace à la boucle for decrite ci-dessous le contenu du champ LIBELLE_THESAURUS de cette requête .

    La variable lvi de type listviewitem reçoit le contenu de la ligne drTerme(type datarow) de la table THESAURUS1 (créee avec le remplissage du dataset), sur laquelle on pointe pendant l'execution de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     For Each drTerme In objDS2.Tables("THESAURUS1").Rows
                lvi = lstThesaurus.Items.Add(Convert.ToString(drTerme.Item("LIBELLE_THESAURUS")))
                With lvi
                    .ForeColor() = Color.Indigo
                    .Tag = CType(drTerme("ID_THES"), Integer)
                    .Font = New Font("Helvetica", 10)
                End With
                       Next
    Pouvez vous m'expliquer comment se fait il que je puisse recuperer le tag du listview item courant dans une autre procedure, alors que le contenu de la variable lvi est écrasé à chaque passage dans la boucle For Each.

    Merci beaucoup à vous de votre aide
    Cordialement.

    Nathalie Harbonne

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    Bonjour,

    Comment as tu déclaré ta variable "lvi" ?
    Si tu l'as fait en global dans ta classe, et bien c'est normal que tu récupères les valeurs de la dernière insertion dans ta liste "lstThesaurus", sinon, un bout de code pourrait eclairsir la situation. (endroit ou est déclaré ta variable et l'endroit ou tu te rends compte que l'on a accès aux valeurs de ta liste).

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par harbonne Voir le message
    alors que le contenu de la variable lvi est écrasé à chaque passage dans la boucle For Each
    Non, le contenu de la variable n'est pas écrasé... lvi contient seulement une référence à l'objet, pas l'objet lui-même. L'objet qui était pointé par lvi existe toujours dans la liste des items, c'est juste qu'à l'itération suivant la variable lvi pointe vers un nouvel objet

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut recupération d'un listview item
    Merci beaucoup de votre réponse!!en effet, je comprends mieux, j'avais un peu perdu le fil.
    en effet, tout cela est plus clair.
    Maintenant , lorsqu'on écrit With lvi , que cela signifie t-il : avec l'objet situé à l'adresse contenue dans lvi, on affecfte ses propriétés suivantes: Forecolor, tag et font

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With lvi
                    .ForeColor() = Color.Indigo
                    .Tag = CType(drTerme("ID_THES"), Integer)
                    .Font = New Font("Helvetica", 10)
                End With
    Merci beaucoup de votre réponse.

    Cordialement.

    Nathalie

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    Le with permet seulement d'eviter d'ecrire plusieurs fois le meme début d'instructions. Dans ton exemple sans le with tu serais obligé d'ecrire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lvi.ForeColor() = Color.Indigo
    lvi.Tag = CType(drTerme("ID_THES"), Integer)
    lvi.Font = New Font("Helvetica", 10)

    C'est surtout utile quand on a de longue, très longue instructions...
    J'espere avoir répondu a ta question.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par harbonne Voir le message
    avec l'objet situé à l'adresse contenue dans lvi, on affecfte ses propriétés suivantes: Forecolor, tag et font
    C'est à peu près ça, si ce n'est qu'en .NET une référence n'est pas vraiment une adresse (comme expliqué dans cet article, si tu lis l'anglais)... mais l'analogie est suffisante pour comprendre ce qui se passe.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut une reference n'est pas une adresse
    Bonjour et merci de ton message ainsi que du lien vers la notion d ereference.
    Le problème est que je n'ai pas tout bien compris dans le détail.

    Si j'ai bien compris ce que j'ai traduit, d'après l'auteur de cet article, une reference contient plus qu'une adresse est il n'est pas exact de limiter sa definition à une adresse.
    Mais comment expliquer cela à des débutant?
    Puis je me permettre de restreindre la notion de référence à celle d'adresse pour expliquer ce qui se passe avec la variable lvi( message précédent) .

    En java, par contre , si les auteurs que j'ai lus m'ont bien renseignée, la notion de référence est bien l'adresse d'un objet en mémoire.

    Merci beaucoup de ton aide.

    Cordialement.

    Nathalie

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par harbonne Voir le message
    Si j'ai bien compris ce que j'ai traduit, d'après l'auteur de cet article, une reference contient plus qu'une adresse est il n'est pas exact de limiter sa definition à une adresse.
    Mais comment expliquer cela à des débutant?
    Puis je me permettre de restreindre la notion de référence à celle d'adresse pour expliquer ce qui se passe avec la variable lvi( message précédent).
    Dans la plupart des cas, dire qu'une référence est une adresse est une approximation suffisante pour comprendre le fonctionnement. Mais ça reste une approximation...

    Comme le dit l'article que je t'ai indiqué, en pratique, dans le CLR, les références sont implémentées comme des adresses, mais ça pourrait tout à fait être être implémenté autrement. D'ailleurs il n'y a pas de moyen (pas de moyen simple en tous cas) de connaître la valeur de cette adresse, donc le fait de savoir que c'est une adresse n'apporte rien, si ce n'est une analogie avec les pointeurs pour ceux qui ont fait du C...

    J'aime bien l'analogie d'Eric Lippert : le texte "la neuvième symphonie de Beethoven" est une référence à cette symphonie, pas la symphonie elle-même...

Discussions similaires

  1. [C#][Windows Forms]ListView item selectionné en bleu
    Par arnauann dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/08/2007, 09h52
  2. [C#] Listview item avec chaine tronquée
    Par heavydrinker dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/10/2006, 15h46
  3. Réponses: 5
    Dernier message: 12/08/2006, 20h35
  4. Réponses: 5
    Dernier message: 08/06/2006, 16h11
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

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