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 :

Probleme DataBinding non actualisé


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Par défaut Probleme DataBinding non actualisé
    Bonjour,

    J'utilise les DataBinding pour actualiser les données de mes composants. Le probleme est que si je modifie une propriete par un composant graphique en runtime (ex : TextBox, PropertyGrid), le DataBinding fonctionne et met à jour le composant liée ; mais si je change la propriété par le CODE (ex sur le click d'un bouton), le databinding fonctionne pas.

    Voici mon code exemple, il s'agit d'un simple formulaire avec 2 TextBox (Bindées sur les propriété nom et prenom de ma classe Personne), deux boutons, et un PropertyGrid. La classe Personne se compose de 2 propriétés (Nom et Prénom). Lorsque je change l'une des propriétés par le propertygrid, les Textbox sont automatiquement mises à jour, met si je change par le code, les Textbox ne sont pas mises à jour

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    Public Class Form1
     
    #Region "*** MEMBRES PRIVES "
     
        Private Pers As New Personne
     
    #End Region
     
    #Region "*** CONSTRUCTEURS "
     
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Me.PropertyGrid1.SelectedObject = Me.Pers
     
            With Me.UltraTextEditor1.DataBindings
                .DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged
                .Add("text", Me.Pers, "Nom")
            End With
     
            With Me.UltraTextEditor2.DataBindings
                .DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged
                .Add("text", Me.Pers, "Prenom")
            End With
     
        End Sub
     
    #End Region
     
    #Region "*** EVENEMENTS "
     
        Private Sub btn_SetPrenom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_SetPrenom.Click
            Me.Pers.Nom = "Nom " & Now.ToLongTimeString
        End Sub
     
        Private Sub btn_SetNom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_SetNom.Click
            Me.Pers.Prenom = "Prenom " & Now.ToLongTimeString
        End Sub
     
    #End Region
     
    End Class
     
    Public Class Personne
     
    #Region "*** MEMBRES PRIVES "
     
        Private _nom As String
        Private _prenom As String
     
    #End Region
     
    #Region "*** PROPRIETES "
     
        Public Property Nom() As String
            Get
                Return Me._nom
            End Get
            Set(ByVal value As String)
                Me._nom = value
                MsgBox("Nom = " & value)
            End Set
        End Property
     
        Public Property Prenom() As String
            Get
                Return Me._prenom
            End Get
            Set(ByVal value As String)
                Me._prenom = value
                MsgBox("Prenom = " & value)
            End Set
        End Property
     
    #End Region
     
    #Region "*** CONSTRUCTEURS "
     
        ''' <summary>
        ''' Vierge
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New()
     
        End Sub
     
        ''' <summary>
        ''' Nom(String)
        ''' </summary>
        ''' <param name="Nom"></param>
        ''' <remarks></remarks>
        Public Sub New(ByVal Nom As String)
            Me._nom = Nom
        End Sub
     
        ''' <summary>
        ''' Nom(String), Prenom(String)
        ''' </summary>
        ''' <param name="Nom"></param>
        ''' <param name="Prenom"></param>
        ''' <remarks></remarks>
        Public Sub New(ByVal Nom As String, ByVal Prenom As String)
            Me.New(Nom)
            Me._prenom = Prenom
        End Sub
     
    #End Region
     
    End Class

  2. #2
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    Il faut que ta classe Personne dispose d'evenements [Propriete]Changed pour notifier au binding que quelque chose s'est passe (cet evenement est automatiquement leve par le controle)

    "Solving one of these problems" @ http://www.codeproject.com/csharp/simpledatabinding.asp

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Par défaut
    Ok merci, sa marche, ma classe implement INotifyPropertyChanged

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2006, 08h22
  2. [GCC]problem lldiv_t non reconnu.
    Par Mr_Chut dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 26/06/2006, 16h33
  3. probleme de non identifier (Run On Server) sur tomcat
    Par subzero82 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/05/2006, 19h08
  4. [c#] probleme fenetre non rectangulaire
    Par orelero dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/12/2005, 12h32
  5. probleme (d:) non reconu
    Par beb-mbs dans le forum Composants
    Réponses: 3
    Dernier message: 31/08/2005, 16h53

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