public partial class Form1 : Form
{
MyClass myClass = new MyClass("one", "two");
public Form1()
{
InitializeComponent();
textBox1.DataBindings.Add("Text", myClass, "Text1", false, DataSourceUpdateMode.Never);
textBox2.DataBindings.Add("Text", myClass, "Text2", false, DataSourceUpdateMode.Never);
}
private void saveButton_Click(object sender, EventArgs e)
{
myClass.Text1 = textBox1.Text;
myClass.Text2 = textBox2.Text;
//textBox1.DataBindings["Text"].WriteValue();
//textBox2.DataBindings["Text"].WriteValue();
}
}
public class MyClass : INotifyPropertyChanged
{
private string _Text1;
private string _Text2;
public event PropertyChangedEventHandler PropertyChanged;
public string Text1
{
get { return _Text1; }
set { _Text1 = value; OnPropertyChanged(new PropertyChangedEventArgs("Text1")); }
}
public string Text2
{
get { return _Text2; }
set { _Text2 = value; OnPropertyChanged(new PropertyChangedEventArgs("Text2")); }
}
public MyClass(string text1, string text2)
{
Text1 = text1;
Text2 = text2;
}
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null) PropertyChanged(this, e);
}
}
Je pense est assez clair ce que j'essaie d'atteindre. Je veux que mon formulaire enregistre les modifications apportées dans mes deux TextBox
es à myClass
. Mais chaque fois que j'appuie sur le bouton Enregistrer après avoir édité les deux zones de texte, et saveButton_Click
est invoqué, le deuxième textBox2
Text
retourne au texte original ("deux"). J'ai essayé d'utiliser la fonction WriteValue
Binding
mais la même chose se produit. Utiliser .net 4.0.Problème avec DataBindings, expliquer s'il vous plaît
Modifier Merci pour vos réponses, mais je n'ai pas besoin de solutions de contournement. Je peux les trouver moi-même. J'ai juste besoin de comprendre un peu mieux comment la liaison fonctionne. Je voudrais comprendre pourquoi cela se passe-t-il?
Cela a fonctionné. Mais je ne comprends pas pourquoi si mes propriétés ne font pas partie d'une liste. – Juan
@jsoldi, j'ai édité ma réponse pour inclure le fait que 'ListChanged' est également levé quand les propriétés' DataSource' changent. –