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);
}
}
我想我很清楚自己想要達到什麼目的。我希望我的表單將我在兩個TextBox
ES中所做的更改保存到myClass
。但是,無論何時在編輯兩個文本框後按下保存按鈕,並且調用saveButton_Click
,第二個textBox2
的Text
都會返回原始文本(「2」)。我嘗試使用Binding
的WriteValue
函數,但同樣的事情發生。使用.net 4.0。DataBindings有問題,請解釋一下
編輯感謝您的回答,但我不需要解決方法。我可以自己找到它們。我只需要更好地理解綁定是如何工作的。我想了解爲什麼會發生這種情況?
工作。但我不明白爲什麼如果我的屬性不是列表的一部分。 – Juan 2010-10-29 02:08:00
@jsoldi,我編輯了我的答案,以包含「DataCource」屬性更改時也引發'ListChanged'的事實。 – 2010-10-29 03:20:07