jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
14 déc. 2010 à 12:21
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
16 déc. 2010 à 12:14
Bonjour à tous,
Une fois de plus je reviens vers vous.
J'ai déjà utilisé le DataBindings (de manière simple) avant et cela fonctionnait mais la je doit passer à côté d'un truc important.
Voilà. (merci d'avance aux courageux qui liront tout).
J'ai un classe source implémentant INotifyPropertyChanged :
public class MaSource: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private string _nombre;
public string Nombre
{
get { return _nombre; }
set
{
if (_nombre != value)
{
_nombre = value;
OnPropertyChanged("Nombre");
}
}
}
public MaSource(string nombre)
{
_nombre = nombre;
}
}
Ensuite j'ai une autre classe héritant de Control et implémentant aussi INotifyPropertyChanged. Je fais hérité de Control pour pouvoir "aisément" avoir la collection DataBindings. (je sais c'est vilain mais bon...)
public class AutreClasse : Control, INotifyPropertyChanged
{
private string _test;
public string TEST
{
get { return _test; }
set
{
if (_test != value)
{
_test = value;
OnPropertyChanged("TEST");
}
}
}
public AutreClasse()
{
this.Visible = true;
}
#region INotifyPropertyChanged Membres
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
Ensuite j'ai un formulaire avec un textbox et une list<MaSource>
public partial class Form1 : Form
{
private MaSource _source = new MaSource("Valeur");
private AutreClasse _obj = new AutreClasse();
public Form1()
{
InitializeComponent();
textBox1.DataBindings.Add("Text", _source, "Nombre", false, DataSourceUpdateMode.OnPropertyChanged);
_obj.DataBindings.Add("TEST", _source, "Nombre", true, DataSourceUpdateMode.OnPropertyChanged);
}
private void button1_Click(object sender, EventArgs e)
{
}
}
Voilà donc mon problème. Je souhaiterait Binder la propriété Nombre d'un objet MaSource vers la propriété TEST d'un objet AutreClasse... Je n'y arrive.
Le binding avec le textbox fonctionne mais pas celui avec AutreClasse.
Ma question est donc existe t'il un moyen "simple" d'arriver à mes fins?
Je pensais ne poserais pas de problème mais j'ai du me tromper.
Je voudrais éviter d'avoir à écrire des classes trop "compliquées"
J'ai beau chercher sur le net mais à part Base de données et DataGridView, y a pas grand chose comme exemple pour le DataBinding.
D'ailleurs si certains avaient des liens intéressants je suis preneur aussi.
Un grand merci pour m'avoir lu jusqu'au bout et un grand merci à ceux qui pourront me donner un coup de main.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 16 déc. 2010 à 12:14
Salut,
Merci d'avoir pris le temps de me lire.
Si je suis ce que tu dis, je ne fais pas de Databinding. L'un des avantages du DataBinding c'est justement de ne pas avoir à écrire le code de mise à jour et les abonnements aux porpertyChanged.
Je crois en fait avoir ENFIN trouver la réponse à ma question ce matin.
Il "suffisait" d'ajouter l'objet héritant de control (AutreClasse), à la collection de control du formulaire.