目标只更新一次

本文关键字:一次 更新 目标 | 更新日期: 2023-09-27 18:14:18

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

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

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

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

我怎么能得到文本框总是更新时,源属性的变化?

我将给出我的变通方法作为答案,希望我能帮助别人,但如果有人能发现我的问题并告诉我我做错了什么,那就更好了。我已经找了好几个小时了

目标只更新一次

我添加了一个"Refresh"按钮,并赋予它如下代码:

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

在某些时候,我(出于某种奇怪的原因)注释掉了INotifyPropertyChanged接口的声明。

class Targets// : INotifyPropertyChanged

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

class Targets : INotifyPropertyChanged

它运行良好,并适当地更新了目标控件