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
Partager