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 :

Problème pour retrouver avec findname un combobox créé dynamiquement


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut Problème pour retrouver avec findname un combobox créé dynamiquement
    Bonjour,

    Je crée en WPF un formulaire qui génère dynamiquement des combobox nommées par le préfixe "CB_" puis le numéro de la combobox dans lesquelles sont inséré un événement.

    Dans cet événement j'aimerais appeler toutes les combobox grâce au Findname pour lire leur contenu.
    Le Findname me renvoie un objet null alors que si l'objet a été créé directement en xaml, le findname fonctionne très bien.

    Voici le code :

    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
     
     
    'création de la combobox
    sub creationcombobox
            Dim MaCombobox1 As New ComboBox
            If EspaceValue = " " Then
                MaCombobox1.Name = "CB1_" & Right(Str(num), Len(Str(num)) - 1)
            Else
                MaCombobox1.Name = "CB1_" & Str(num)
            End If
     
            MaCombobox1.Height = 30
            MaCombobox1.IsEditable = True
            MaCombobox1.VerticalContentAlignment = Windows.VerticalAlignment.Center
     
            Grid.SetRow(MaCombobox1, 1)
            Grid.SetColumn(MaCombobox1, 3)
            magrille.Children.Add(MaCombobox1)
            AddHandler MaCombobox1.MouseDoubleClick, AddressOf MethodeCombo1
     
    End Sub
     
    '
    Sub MethodeCombo1
            Dim NomCB1 As String
            Dim CB1 As Object
            Dim MonCB1 As ComboBox
            NomGB = Convert.ToString("GB_" & monnum)
                GB = Me.FindName(NomGB)
                NomCB1 = Convert.ToString("CB1_" & monnum)
                CB1 = Me.FindName(NomCB1)
                If TypeOf CB1 Is ComboBox Then
                    MonCB1 = TryCast(CB1, ComboBox)
                    Item1 = MonCB1.Text
                Else
                    MonCB1 = Nothing
                End If
     
    End Sub

    Si quelqu'un a une piste à me donner pour pouvoir exploiter mes combobox...

    Pour info, dans un premier temps, j'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For Each ctrl In Me.Controls
                If TypeOf ctrl Is ComboBox Then
                End If
            Next
    Mais il me mets une erreur "Controls n'est pas un membre de MaFenetre"
    J'ai essayé d'ajouter des imports comme :
    Imports System.Windows.Controls
    mais sans succès.
    C'est pour ça que je me suis rabattu sur le Findname.
    Peut-être que la solution a cette erreur de controls me permettrait de résoudre plus facilement mon accès aux combobox.

    Si quelqu'un a une proposition pour l'un ou l'autre des problèmes, je suis preneuse car bloquée la-dessus depuis un moment maintenant.

    Un grand merci

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Perso,

    Je créerais une collection (un Dictionary(Of String, ComboBox)) dans laquelle j'irais mettre toutes les comobox ainsi créées. Après, reste plus qu'à y accéder par leur nom vu que c'est la clef...

  3. #3
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut
    Merci beaucoup Kropernic!
    Ca marche parfaitement avec une collection. Ca simplifie même grandement le code.

    Le voici si ça peut aider certains :

    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
     
    'création de la combobox
     
    Dim DicoCBBX As New Dictionary(Of String, ComboBox)
    sub creationcombobox
            Dim MaCombobox1 As New ComboBox
            If EspaceValue = " " Then
                MaCombobox1.Name = "CB1_" & Right(Str(num), Len(Str(num)) - 1)
            Else
                MaCombobox1.Name = "CB1_" & Str(num)
            End If
     
            MaCombobox1.Height = 30
            MaCombobox1.IsEditable = True
            MaCombobox1.VerticalContentAlignment = Windows.VerticalAlignment.Center
     
            Grid.SetRow(MaCombobox1, 1)
            Grid.SetColumn(MaCombobox1, 3)
            magrille.Children.Add(MaCombobox1)
            'Ajout de la combobox dans la collection DicoCBBX
            DicoCBBX.Add(MaCombobox1.Name, MaCombobox1)
            AddHandler MaCombobox1.MouseDoubleClick, AddressOf MethodeCombo1
     
    End Sub
     
    '
    Sub MethodeCombo1
            Dim NomCB1 As String = Convert.ToString("CB1_" & monnum)
             Dim MonCB1 As ComboBox = DicoCBBX(NomCB1)
             Item1 = MonCB1.Text
     
    End Sub

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

Discussions similaires

  1. [Débutant] Problème pour retrouver les index des contrôles ajoutés dynamiquement
    Par BasicZX81 dans le forum VB.NET
    Réponses: 10
    Dernier message: 04/09/2012, 22h03
  2. Problème pour compiler avec gcc
    Par Mick.Zen dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 28/06/2006, 14h05
  3. Réponses: 7
    Dernier message: 04/06/2006, 17h00
  4. Réponses: 4
    Dernier message: 11/04/2006, 09h07
  5. Problème pour dialoguer avec port parallèle
    Par jejerome dans le forum C++
    Réponses: 8
    Dernier message: 16/05/2005, 11h13

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