我想用数据绑定做一些非常简单的事情,但这不起作用。这就是我想要做的事情:
1,我想和设计师一起做,因为我不想管理代码,这是我使用这个IDE的全部目的。
2,当用户在文本框中编辑时,我班级的字符串变量会发生变化
3,当程序编辑字符串变量时,该文本框中的文本会发生变化。
这是我为它写的代码:
public partial class frmMain : Form, INotifyPropertyChanged
....
private string _btxtChars;
[System.ComponentModel.Bindable(true)]
public string btxtChars {
get
{
return _btxtChars;
}
set
{
_btxtChars = value;
OnPropertyChanged("btxtChars");
}
}
....
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(info));
}
}
我在设计器中设置了相应的属性,产生了以下代码:
this.txtCharToAdd.DataBindings.Add(
new System.Windows.Forms.Binding("Text",
this.frmMainBindingSource,
"btxtChars",
true,
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)
);
现在,当我编辑变量btxtchars时,没有任何反应。我做错了什么?
答案 0 :(得分:0)
您应按如下方式初始化BindingSource,以启动与表单绑定作为数据存储对象:
public partial class frmMain : Form, INotifyPropertyChanged {
public frmMain() {
InitializeComponent();
// you can see that the InitializeComponent method contains the following line:
// this.frmMainBindingSource.DataSource = typeof(WindowsFormsApplication1.frmMain);
frmMainBindingSource.DataSource = this; // you should either replace the line above or initiate binding here
}
//...