【发布时间】:2011-08-08 19:36:42
【问题描述】:
我有一个带有文本框的 Windows 窗体“MyForm”,该文本框绑定到另一个类“MyData”中的属性。数据源更新模式设置为“On Property Change”
我使用了 VisualStudio IDE。它为绑定创建了以下代码
this.txtYield.DataBindings.Add(new Binding("Text", this.BindingSourceMyDataClass, "PropertyInMyDataClass", true, DataSourceUpdateMode.OnPropertyChanged));
在表单构造函数中,在初始化值之后添加代码以将 MyData 类绑定到表单
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);
我尝试在 MyForm.MyBackgroundWorker_RunWorkerCompleted 方法中添加 Refresh() 和 Update(),但数据仍然没有刷新。
如果我稍后运行不同的后台工作程序来更新同一表单上的不同文本框,则绑定到 PropertyInMyDataClass 的文本框会更新
如果有建议可以帮助我理解和解决这个数据绑定问题,我将不胜感激
【问题讨论】:
标签: c# .net winforms data-binding backgroundworker