绑定数据源更改时控制不更新?

时间:2013-08-22 01:31:58

标签: c# .net winforms

很抱歉,如果有人问这个,但我找不到。 我正在尝试将文本框绑定到数据源,但是当数据源发生更改时,文本框不会更新...这是我的代码,任何人都可以建议我做错了吗? 谢谢!

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";

2 个答案:

答案 0 :(得分:1)

假设您的BindingBindingSource绑定到文本框,则需要在代码中添加BindingSource.ResetBindings()

答案 1 :(得分:1)

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

如果没有,您可以查看INotifyPropertyChanged sample

编辑:

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