Pour mimer ce comportement avec les Winforms, on utilise le databinding
Premierement, ta classe doit implémenter l'interface INotifyPropertyChanged :
public ref class Form1 : public System::Windows::Forms::Form, INotifyPropertyChanged
ce qui implique de définir cet événement :
virtual event PropertyChangedEventHandler ^PropertyChanged;
Ensuite, tu déclares une propriété, celle qui sera associée à ton controle :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| private:
String ^_chaine;
public:
property String ^Chaine
{
String ^ get() { return _chaine; }
void set(String ^value)
{
if (value != _chaine)
{
_chaine = value;
NotifyPropertyChanged("Chaine");
}
}
} |
On note la présence de la méthode NotifyPropertyChanged pour indiquer que la propriété a changé de valeur.
1 2 3 4 5 6
|
private:
void NotifyPropertyChanged(String ^info)
{
PropertyChanged(this, gcnew PropertyChangedEventArgs(info));
} |
C'est grâce à PropertyChanged qu'on va déclencher l'événement de mise à jour de la valeur de binding.
Ne pas oublier de définir explicitement le binding, pour un textbox par exemple, il faudra faire :
textBox1->DataBindings->Add("Text", this, "Chaine");
Ainsi, si par code, tu modifies ta propriété "Chaine", le textbox sera mis à jour automatiquement
De meme, si tu modifies le textbox, la propriété Chaine sera informée.
On appelle ca un binding bidirectionnel
Partager