我有一个Windows窗体“MyForm”,它具有绑定到另一个类“MyData”中的属性的文本框。数据源更新模式设置为“On Property Change”绑定到另一个类中的属性的文本字段不会更新
我使用VisualStudio IDE。它创建了下面的代码结合
this.txtYield.DataBindings.Add(new Binding("Text", this.BindingSourceMyDataClass, "PropertyInMyDataClass", true, DataSourceUpdateMode.OnPropertyChanged));
在表单构造,加入初始化后的值的代码到迈德特类结合形式
myDataClassInstantiated = new MyDataClass();
BindingSourceMyDataClass.DataSource = myDataClassInstantiated;
的INotifyProperty接口已经实现:
public double PropertyInMyDataClass
{
get { return _PropertyInMyDataClass; }
set
{
if (!Equals(_PropertyInMyDataClass, value))
{
_PropertyInMyDataClass = value;
FirePropertyChanged("PropertyInMyDataClass");
}
}
}
后台工作者用于运行计算并更新属性'PropertyInMyDataClass'
我希望窗体上的文本框会在后台工作完成时自动更新。这并没有发生
如果我手动复制指定从属性到窗体的文本框中的值,正常显示的数值
this.txtYield.Text = String.Format("{0:F0}", myDataClassInstantiated.PropertyInMyDataClass);
我试图刷新()和Update()添加到MyForm.MyBackgroundWorker_RunWorkerCompleted方法,但数据仍未刷新。
如果我以后运行不同的背景的工人,同样的形式更新不同的文本框,势必PropertyInMyDataClass文本框中被更新
我会很感激的建议,这将有助于我了解并解决此数据绑定问题
感谢@大卫C.我在此表单上有大约15个字段需要更新,我可以等到BackgroundWorkker_RunWorkerCompleted在UI线程上调用。你的代码是解决这个问题的正确方法。如果我可以等到后台工作人员完成更新字段,那么是否有办法启动刷新? – DarwinIcesurfer
@达尔文你如何构建对后台工作者的调用,并填充数据对象。数据对象是静态还是类似的? –
否数据对象不是静态的,但在后台工作进程完成之前,没有任何数据有效。该类具有许多用于计算的输入属性,在计算完成后,需要在表单上更新许多结果。也许数据绑定导致我修复更多的问题。 – DarwinIcesurfer