C#数据绑定因未知原因而无法正常工作

时间:2014-08-04 06:23:24

标签: c# winforms data-binding

我想用数据绑定做一些非常简单的事情,但这不起作用。这就是我想要做的事情:

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时,没有任何反应。我做错了什么?

1 个答案:

答案 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
    }
//...