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 :

Acceder a des proprietes contrôle dynamique [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut Acceder a des proprietes contrôle dynamique
    Bonjour à tous et à toutes
    Je cherche à accéder aux valeurs sélectionnées dans des listview crée dynamiquement.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    ublic Sub CreationEtiquettes()
            Dim Tb As DataTable
            Dim X As Long = 1
            Dim Y As Long = 140
            Dim Z As Long = 1
            Dim Lgmax As Long = 0
            Dim Hauteur As Long = 25
            For Each Tb In Form1.DataSet2.Tables
                Dim Lb As New Label
                Lb.Location = New Point(X * Y, Hauteur)
                Lb.Name = "Label" & CStr(Tb.TableName)
                Lb.Text = CStr(Tb.TableName)
                Form2.Controls.Add(Lb)
                Dim LV As New ListView
                With LV
                    .Location = New Point(X * Y, Hauteur + 25)
                    .Name = "List" & CStr(Tb.TableName)
                    For Each CL As DataColumn In Tb.Columns
                        .Items.Add(CL.ColumnName)
                    Next
                    Form2.Controls.Add(LV)
                    .AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
     
                End With
                AddHandler LV.SelectedIndexChanged, AddressOf ColorLien
                X = X + 1
                If X > 8 Then
                    Hauteur = Hauteur + 150
                    X = 1
                End If
            Next
            Form2.Refresh()
        End Sub
        Public Sub ColorLien(Sender As Object, e As EventArgs)
     
            Dim ListV As ListView
            For Each truc As Control In Form2.Controls
                If TypeOf (truc) Is ListView Then
                    ListV = truc
                    ListV.BackColor = Color.White
                    For Each It As ListViewItem In ListV.Items
                        If It.Name.Contains(Sender.selecteditems.ToString) Then
                            ListV.BackColor = Color.Blue
                            Exit For
                        End If
                    Next
                End If
            Next
        End Sub
    Je généré une étiquette et un Listview , l'etiquette est le nom de la table et le listview est l'ensembles des champs contenu dans la table et je fais ca pour l'ensemble d'une base de donnée.
    Pas de soucis pour la création positionnement et remplissage des données affichées.
    Je souhaiterai que l'orsque je clique sur un listview ( donc un la vue d'un champ) qu'il me color en fond blue touts les autres listview contenant la même donnée.
    Le soucis c'est que j'ai crée cela dynamiquement comment accéde t'on a selecteditem par ex du dit listview?
    Merci bien

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    pas sûr de bien avoir compris le besoin. Par contre dans ta fonction ColorLien, pourquoi n'utilises-tu pas directement le sender (casté en ListView) pour obtenir la référence à ta ListView, plutôt que la chercher dans ton Form2 ?

  3. #3
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    bonjour,

    pour connaitre l item selectionné il faut utiliser l event ItemSelectionChanged :

    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

    ++ bon codage.

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    bonjour
    Je vous remercie de vos réponses j'ai continué a creuser dans les deux sens proposés et j'ai finis par y arriver.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
        Public Sub CreationEtiquettes()
            Dim Tb As DataTable
            Dim X As Long = 1
            Dim Y As Long = 140
            Dim Z As Long = 1
            Dim Lgmax As Long = 0
            Dim Hauteur As Long = 25
            For Each Tb In Form1.DataSet2.Tables
                Dim Lb As New Label
                Lb.Location = New Point(X * Y, Hauteur)
                Lb.Name = "Label" & CStr(Tb.TableName)
                Lb.Text = CStr(Tb.TableName)
                Form2.Controls.Add(Lb)
                Dim LV As New ListView
                With LV
                    .Location = New Point(X * Y, Hauteur + 25)
                    .Name = "List" & CStr(Tb.TableName)
                    For Each CL As DataColumn In Tb.Columns
                        .Items.Add(CL.ColumnName)
                    Next
                    Form2.Controls.Add(LV)
                    .AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
     
                End With
                AddHandler LV.ItemSelectionChanged, AddressOf ColorLien
                X = X + 1
                If X > 8 Then
                    Hauteur = Hauteur + 150
                    X = 1
                End If
            Next
            Form2.Refresh()
        End Sub
        Public Sub ColorLien(Sender As Object, e As EventArgs)
     
            Dim Vartest As String = CStr(Sender.focuseditem.text.ToString)
            Dim ListV As ListView
            For Each truc As Control In Form2.Controls
                If TypeOf (truc) Is ListView Then
                    ListV = truc
                    ListV.BackColor = Color.White
                    For Each It As ListViewItem In ListV.Items
                        If It.Text = Vartest Then
                            ListV.BackColor = Color.Blue
                            Exit For
                        End If
                    Next
                End If
            Next
        End Sub
    Merci à vous deux

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Euhhh nan le plus logique consisterait à définir la bonne signature de de ta méthode ColorLien comme ceci (https://msdn.microsoft.com/fr-fr/lib...code-snippet-2) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ColorLien (Sender as object, e as ListViewItemSelectionChangedEventArgs)
     
    End Sub
    Et pour récupérer l'item sélectionné dans ta sub :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ColorLien (Sender as object, e as ListViewItemSelectionChangedEventArgs)
        MsgBox(e.Item.text)
    End Sub
    Du coup il serait aussi judicieux de vérifier qu'un item est sélectionné car si l'utilisateur clique dans une zone vide du Listview, une exception risque d'être levée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub ColorLien (Sender as object, e as ListViewItemSelectionChangedEventArgs)
        if e.IsSelected Then
            MsgBox(e.SubItem(1).text)
        Else
     
        end If
    End Sub
    A titre info, après c'est toi qui décide

    A+

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

Discussions similaires

  1. Récupérer les ropriétés des contrôles dynamiques
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 21/03/2007, 20h43
  2. Réponses: 4
    Dernier message: 04/12/2006, 11h37
  3. Réponses: 1
    Dernier message: 24/11/2006, 16h36
  4. Réponses: 2
    Dernier message: 09/10/2006, 17h21
  5. [VB.NET] Creer des contrôles dynamiquement
    Par theartist dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/01/2005, 11h42

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