我的主窗体有标签(TabControl),我的目标控件(TextBox)位于第三个标签中。在第一个选项卡上,我有几个TextBox控件,我输入数据。我的代码解析输入的数据并确定最大值,它存储在绑定到目标TextBox的属性中。
textBox_Offset_ODR_MaxDepth.DataBindings
.Add("Text", kernel.Targets, Targets.MaxDepthName);
当我运行程序时,我在第一个选项卡上添加数据,查看我的第三个选项卡,然后看到TextBox已正确更新。它正确显示最大值。然后我回到我的第一个标签,更改数据,然后再次查看我的第三个标签。该值尚未更新。
我可以从其他控件中看到,在计算中使用source属性确实已经更新了source属性,但是该更新还没有被推送到目标TextBox。
如何在源属性更改时始终更新TextBox?
我会给我的解决方法作为对此的回答,希望我能帮助别人,但如果有人能够找出我的问题并告诉我我的意思,那就更好了。做错了。我一直在寻找几个小时。
答案 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
运行正常并适当更新了目标控件。