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 :

Utilisation dictionnaire (exemple) pour binding.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut Utilisation dictionnaire (exemple) pour binding.
    Bonjour à tous,

    Sur les conseils de POL63, j’essaie de comprendre le fonctionnement du dictionnaire.

    Ensuite je voudrais l'utiliser pour faire du binding

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim d as new dictionary(of long, string)
    d.add(5,"le nombre 5")
    dim s as string = d(5) 'retourne "le nombre 5"
    d(5) = "maintenant c'est autre chose la valeur"
    d.remove(5)
    'etc...
    ok çà c'est assez simple

    Son exemple:

    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
     Private _dico_txt_btns As New Dictionary(Of Button, TextBox)
     
        Private Sub creationcontrols() Handles Button1.Click
            For i As Integer = 1 To 3
     
                Dim t As New TextBox
                t.Location = New System.Drawing.Point(10, 35 * i)
                Me.Controls.Add(t)
     
                Dim b As New Button
                b.Location = New System.Drawing.Point(140, 35 * i)
                Me.Controls.Add(b)
     
                AddHandler b.Click, AddressOf buttonclick
                _dico_txt_btns.Add(b, t)
            Next
        End Sub
     
        Private Sub buttonclick(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim boutoncliqué As Button = DirectCast(sender, Button)
            Dim textboxlié As TextBox = _dico_txt_btns(boutoncliqué)
        End Sub
    Donc ici le dico associe un bouton a une textbox.
    Je ne comprend pas bien la procédure attaché à l’événement du click sur le bouton:
    Le bouton cliqué va prendre place dans la variable boutoncliqué, et ...
    _dico_txt_btns(boutoncliqué) pourquoi n'y a t'il qu'un argument?

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    _dico_txt_btns(boutoncliqué) pourquoi n'y a t'il qu'un argument?
    Pardon c'est l'indice...

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    je pense que tu aurais pu poser ses questions sur l'autre topic, et éventuellement en rouvrir un pour les bindings

    Dim boutoncliqué As Button = DirectCast(sender, Button)
    car l'évènement est lié à 5 boutons, sender contient le bouton cliqué (enfin à priori ca tu avais suivi)

    ensuite un dictionaire lie une valeur à une clé
    la clé est le premier type (bouton) et la valeur le 2ème type (textbox)
    quand on fait un ajout on précise les 2 (ou nothing pour la valeur et on peut la définir plus tard)
    quand on lit, on donne une clé et ca retourne la valeur liée
    donc on donne un bouton et ca donne le textbox lié
    letextbox = dico(unbouton)
    en donnant un autre bouton ca retournera un autre checkbox
    si on donne un bouton qui n'est pas dans le dictionnaire ca plante (clé non présente)

    si tu veux parcourir tous les couples clé/valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each key as typeclé in dico.keys
         dim valeur as typevaleur = dico(key)
    next
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i as integer = 0 to dico.count -1
      dim k as typeclé = dico.keys(i)
      dim v as typevaleur = dico(k)
    next
    dico.keys et dico.values sont indexés (0 à count-1)
    item est la propriété par défaut de la classe dictionary
    dico(k) équivaut à écrire dico.item(k)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Pour parcourir un dico il vaut mieux utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cle As KeyValuePair(Of Button, TextBox) In dico
    Ainsi cle.Key te donne le bouton et cle.Value te donne le Textbox.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    Merci à vous,

    Alors par ex, j'ai un tas de çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetupForm.NSMFrequency_LF_tbox.DataBindings.Add(New Binding("Text", Me, "NSMFrequency_LF", True, DataSourceUpdateMode.OnPropertyChanged, 0))
    Je fais un dico:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim BindingDico as new dictionary(of string, textbox)
    pour le remplir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For each textbox as control in list
    BindingDico.add((textbox.name).Remove(InputControl.Name.Length - 5),textbox)
    'Car chaque propriété a le même nom que la textbox associée, "_tbox" en moins. Tordu? ou avec un autre dico?
    next
    pour faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetupForm.BindingDico("NSMFrequency_LF").DataBindings.Add(New Binding("Text", Me, "NSMFrequency_LF", True, DataSourceUpdateMode.OnPropertyChanged, 0))

    que je pourrais faire egalement dans une boucle avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cle As KeyValuePair(Of Button, TextBox) In dico

    comme çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cle As KeyValuePair(Of Button, TextBox) In dico
    SetupForm.BindingDico(cle).DataBindings.Add(New Binding("Text", Me, cle, True, DataSourceUpdateMode.OnPropertyChanged, 0))
    next

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    çà parait juste?

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetupForm.BindingDico(cle.Key).DataBindings.Add(New Binding("Text", Me, cle.Value, True, DataSourceUpdateMode.OnPropertyChanged, 0))
    ça me paraît bon, à tester maintenant...

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

Discussions similaires

  1. [JavaScript] Un exemple, pour les experts, utilisant import, shadow et web components
    Par danielhagnoul dans le forum Contribuez
    Réponses: 2
    Dernier message: 21/11/2014, 22h34
  2. [Python 3.X] Recherche exemple pour listes,dictionnaires
    Par 56442 dans le forum Général Python
    Réponses: 6
    Dernier message: 07/07/2014, 17h27
  3. Réponses: 2
    Dernier message: 20/08/2011, 16h51
  4. [jetty]pb pour utiliser l'exemple de mergere
    Par elitost dans le forum Maven
    Réponses: 6
    Dernier message: 06/09/2006, 21h42

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