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 :

Data binding - Pour lier une textbox à une propriété. [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut Data binding - Pour lier une textbox à une propriété.
    Bonjour à tous,

    J'essaie de binder des propriétés à des contrôles de windows form.

    J'ai cette ligne de commande comme modèle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myMainForm.txtmass.DataBindings.Add(New Binding("Text", myCar, "_mass", True, DataSourceUpdateMode.OnPropertyChanged, 0))
    Mais elle est trop contracter pour moi et j'ai du mal à la décrypter.

    Quelqu'un pourrait il me la décomposer en plusieurs lignes?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myBinding As Binding 
    myBinding=New Binding("Text", myCar, "_mass", True, DataSourceUpdateMode.OnPropertyChanged, 0)
    myMainForm.txtmass.DataBindings.Add(myBinding)

    Pense pas que ca va t'aider bcp
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  3. #3
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    Bonjour Benoit,

    Si çà va dejà mieux...

    çà veux donc dire aussi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myBinding as New Binding("Text", myCar, "_mass", True, DataSourceUpdateMode.OnPropertyChanged, 0)
    myMainForm.txtmass.DataBindings.Add(myBinding)
    C'est la signature n°4, avec 6 paramètres.

    et c'est ressemble dejà plus à l'exemple de l'aide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim data1 As New MyData(DateTime.Now)
    Dim binding1 As New Binding("MyDataProperty")
    binding1.Source = data1
    Me.myText.SetBinding(TextBlock.TextProperty, binding1)
    Encore que...il n'existe aucune signature de binding qui ne compte qu'un seul paramètre. Pas terrible c'est aide en ligne...

  4. #4
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    En utilisant la premiere signature de "binding"

    J'ai fais ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Dim data1 As New SetupSpreadsheet.ChassisTab
        Dim binding As New Binding("Text", data1, "TotalMass")
    data1 est une instance de la classe ChassisTab qui contient la propriété TotalMass dont le nom est en type string en 3e pamrametre de la methode binding.
    Text est le nom de la propriété du controle
    data1 est le l'objet qui contient la propriété à binder.

    Mais il me manque la suite que je ne comprend pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myMainForm.txtmass.DataBindings.Add(myBinding)
    Au final c'est pour binder une propriété à une textbox

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    1)Tu crées le Binding désiré
    Ici une propriété "Text" doit-être remplie avec la propriété TotalMass de l'objet data1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    New Binding("Text", data1, "TotalMass")

    2)Tu assignes ce binding à un composant ici le control txtmass
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    partmyMainForm.txtmass.DataBindings.Add(myBinding)

    et la mise-à-jour du binding s'effectue quand
    DataSourceUpdateMode.OnPropertyChanged est lancé
    donc quand tu change la valeur de TotalMass il faut faire un NotififyPropertyChange
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Gualino Voir le message
    et c'est ressemble dejà plus à l'exemple de l'aide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim data1 As New MyData(DateTime.Now)
    Dim binding1 As New Binding("MyDataProperty")
    binding1.Source = data1
    Me.myText.SetBinding(TextBlock.TextProperty, binding1)
    Encore que...il n'existe aucune signature de binding qui ne compte qu'un seul paramètre. Pas terrible c'est aide en ligne...
    Ce n'est pas l'aide qui n'est pas terrible, c'est toi qui sais pas l'utiliser
    L'exemple que tu montres concerne les bindings WPF, pas ceux de Windows Forms... La doc des bindings WinForms est ici :
    http://msdn.microsoft.com/en-us/libr...s.binding.aspx

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    En même temps avec les différentes versions du framework,
    les composants Wpf Form,
    les composants Windows Form,
    les composants Web,
    les composants Silverlight,

    l'aide devient de plus en plus difficile à utiliser
    ou du moins faire bien attention
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  8. #8
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ce n'est pas l'aide qui n'est pas terrible, c'est toi qui sais pas l'utiliser
    L'exemple que tu montres concerne les bindings WPF, pas ceux de Windows Forms... La doc des bindings WinForms est ici :
    http://msdn.microsoft.com/en-us/libr...s.binding.aspx
    Effectivement...

  9. #9
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    En même temps avec les différentes versions du framework,
    les composants Wpf Form,
    les composants Windows Form,
    les composants Web,
    les composants Silverlight,

    l'aide devient de plus en plus difficile à utiliser
    ou du moins faire bien attention
    oui pour moi c'est:

    Chinois


    I) Chinois
    Chinois, chinois with chinois and chinois so chinois:
    • Chinois
    • Chinois
    • Chinois

  10. #10
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    J'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim data1 As New SetupSpreadsheet.ChassisTab
            Dim binding As New Binding("Text", data1, "TotalMass")
     
    TotalMass_tbox.DataBindings.Add(binding)
    et ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TotalMass_tbox.DataBindings.Add("Text", Chassis, "TotalMass")
    et dans les deux cas j'ai:

    This causes two bindings in the collection to bind to the same property.
    Parameter name: binding
    Pfffffffffffff.............

    Quelle collection?
    Quels 2 bindings?

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    euh faut mettre qu'un des 2
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  12. #12
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    euh faut mettre qu'un des 2
    un des deux quoi? ce sont deux code différents que je n'ai pas utilisé ensemble.

  13. #13
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    ah bizzare

    fait une recherche sur "DataBindings" pour voir si il y en aurai pas un qui traine et sur TotalMass_tbox.Text
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  14. #14
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    çà aurait pu être çà car avant j'avais tenter de faire du binding avec le menu, mais j'avais bien tout supprimer, j'ai fait une recherche sur tout le projet, mais je n'ai rien trouvé.

  15. #15
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    J'ai trouvé pourquoi j'avais:

    This causes two bindings in the collection to bind to the same property.
    Parameter name: binding
    ==>C'est une histoire de "Clear"

    Mais j'ai un autre problème:

    J'ai fait le bind sur une textbox qui donne une valeur de sortie

    Si je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      Private Sub calling() Handles MyBase.Load
            Call DisplayChassisTabResults()
        End Sub
     
        Private Sub DisplayChassisTabResults() Handles Button1.Click
     
            Dim Chassis As New SetupSpreadsheet.ChassisTab
     
    PercentageOfAntiRollStiffnessFromSpring_Front_tbox.DataBindings.Clear()
     
            Dim binding As New Binding("Text", Chassis, "PourcentageOfAntiRollTorqueCommingFromSpring_Front")
            PercentageOfAntiRollStiffnessFromSpring_Front_tbox.DataBindings.Add(binding)
    La textbox bindé, donne le résultat au chargement du form, mais au click sur le bouton 1, elle affiche "Non numérique".

    et si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Private Sub calling() Handles Button1.Click
            Call DisplayChassisTabResults()
        End Sub
     
     
        Private Sub DisplayChassisTabResults()
     
            Dim Chassis As New SetupSpreadsheet.ChassisTab
     
    PercentageOfAntiRollStiffnessFromSpring_Front_tbox.DataBindings.Clear()
     
            Dim binding As New Binding("Text", Chassis, "PourcentageOfAntiRollTorqueCommingFromSpring_Front")
            PercentageOfAntiRollStiffnessFromSpring_Front_tbox.DataBindings.Add(binding)
    ou même:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub DisplayChassisTabResults() Handles Button1.Click
     
            Dim Chassis As New SetupSpreadsheet.ChassisTab
     
    PercentageOfAntiRollStiffnessFromSpring_Front_tbox.DataBindings.Clear()
     
            Dim binding As New Binding("Text", Chassis, "PourcentageOfAntiRollTorqueCommingFromSpring_Front")
            PercentageOfAntiRollStiffnessFromSpring_Front_tbox.DataBindings.Add(binding)
    cela affiche "non numérique" dès le click!

    alors que, selon moi l'evenement mybase.load, n'est que la conséquencede l'ouverture du form par la sub:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Class MainForm
     
        Private Sub MainFormSub(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Main.Click
     
            Dim form As New SetupForm
            SetupForm.Show()
     
        End Sub
    End Class
    Interpretation : Le bind ne fonctionne correctement que si la sub "DisplayChassisTabResults()" est appelé par un événement mybase.load...


  16. #16
    Membre régulier
    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
    Points : 111
    Points
    111
    Par défaut
    Compris!

    C'était un problème de chronologie : avec mybase.load le code est lu et collecte toute les valeurs d'entrée puis exécute la sub.

    Alors que avec le l’événement click, la sub est exécutée en premier, du fait qu'elle soit en tête de page...

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

Discussions similaires

  1. [Débutant] Binding pour le chargement d'une ListBox Et pour récupérer le SelectedItem
    Par Arnaud13 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 13/06/2014, 14h16
  2. Problème pour calculer un % dans une TextBox
    Par Patrick-P dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2013, 16h46
  3. Problème pour lier des extensions à une application
    Par blandinais dans le forum Windows 7
    Réponses: 4
    Dernier message: 27/12/2011, 11h51
  4. [Débutant] subterfuge pour lier des données à une checkedlistbox
    Par enzostar dans le forum C#
    Réponses: 1
    Dernier message: 10/08/2011, 16h10
  5. Lier les données d'une textbox à une autre
    Par Popeye63 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/11/2009, 16h51

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