目标只是更新一次

时间:2014-07-22 18:17:18

标签: c# winforms data-binding

我的主窗体有标签(TabControl),我的目标控件(TextBox)位于第三个标签中。在第一个选项卡上,我有几个TextBox控件,我输入数据。我的代码解析输入的数据并确定最大值,它存储在绑定到目标TextBox的属性中。

textBox_Offset_ODR_MaxDepth.DataBindings
                           .Add("Text", kernel.Targets, Targets.MaxDepthName);

当我运行程序时,我在第一个选项卡上添加数据,查看我的第三个选项卡,然后看到TextBox已正确更新。它正确显示最大值。然后我回到我的第一个标签,更改数据,然后再次查看我的第三个标签。该值尚未更新。

我可以从其他控件中看到,在计算中使用source属性确实已经更新了source属性,但是该更新还没有被推送到目标TextBox。

如何在源属性更改时始终更新TextBox?

我会给我的解决方法作为对此的回答,希望我能帮助别人,但如果有人能够找出我的问题并告诉我我的意思,那就更好了。做错了。我一直在寻找几个小时。

2 个答案:

答案 0 :(得分:0)

我添加了一个"刷新"按钮并给它这个代码:

private void button_Offset_ODR_Refresh_Click(object sender, EventArgs e)
{
    textBox_Offset_ODR_MaxDepth.DataBindings[0].ControlUpdateMode = ControlUpdateMode.Never;
    textBox_Offset_ODR_MaxDepth.DataBindings[0].ControlUpdateMode = ControlUpdateMode.OnPropertyChanged;
}

答案 1 :(得分:0)

在某些时候,我(出于一些奇怪的原因)注释掉了我对INotifyPropertyChanged界面的声明。

class Targets// : INotifyPropertyChanged

我的类实现了接口,但顶部的声明已被注释掉了。出于某种原因,这允许目标控件仅更新一次。当我删除评论时

class Targets : INotifyPropertyChanged

运行正常并适当更新了目标控件。