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