1

抱歉,如果有人问过这个问题,但我找不到。我正在尝试将文本框绑定到数据源,但是当数据源更改时文本框不会更新...这是我的代码,谁能建议我做错了什么?谢谢!

public Controller()
{
            myForm.databaseTextBinding = new Binding("Text", ac, "connString");
        myForm.databaseTextBinding.ControlUpdateMode = ControlUpdateMode.OnPropertyChanged;

        myForm.setupSources();
}

public partial class Form1 : Form
{

    public Binding databaseTextBinding;


    public void setupSources()
    {
        DatabaseTextBox.DataBindings.Add(databaseTextBinding);

    }
}

更新:我现在可以制作会更新的文本框。不过我有一个新问题。数据源本身会因我创建一个新的 ac 对象而改变。但如果我这样做,绑定现在会更新更长的时间。我考虑过该属性可能没有改变,但我确信它是!

例如,这行得通

ac.cString = "ABC";
ac.cString = "DEF"; 

但这并不...

ac = new AccessConnector(path);
ac.cString = "ABC"; 
ac.cString = "DEF";
4

2 回答 2

2

绑定对象(即ac)的类型是否实现了INotifyPropertyChanged?如果是这样,属性“connString”是否会在更改时引发 PropertyChanged 事件?

如果没有,您可以查看INotifyPropertyChanged 示例

编辑:

该部分不起作用是由于您没有更改与新对象的绑定 - 它仍然绑定到旧对象。当您将新对象分配给引用变量 ac 时,与原始对象的绑定不会改变 - 因此它仍然指向前一个对象。

于 2013-08-22T01:57:22.753 回答
1

假设您Binding将 a 绑定BindingSource到文本框,您需要将 a 添加BindingSource.ResetBindings()到您的代码中。

于 2013-08-22T01:56:34.537 回答