2

我使用以下代码将属性绑定到文本框控件(Windows 窗体程序):

textBox.DataBindings.Add("Text", myObject, myPropertyName, false, DataSourceUpdateMode.OnPropertyChanged);

在程序中,我通过反射更新属性的值 - 使用此代码。

PropertyInfo propertyInfo = myObject.GetType().GetProperty(myPropertyName);
propertyInfo.SetValue(myObject, myNewValue, null);

对象中的属性值正在更新。当代码返回表单时,我可以在调试器中看到它。但是,文本框不显示新值。

如果我清除文本框上的数据绑定并重新添加它,它会显示新值。

通过反射设置属性值后,如何让数据绑定文本框自动显示新值?

4

1 回答 1

0

如果您设置它不使用反射,绑定是否有效?如果它仍然不起作用,那么您可能需要让您的对象实现 INotifyPropertyChanged,然后在您的设置器中您需要引发 OnPropertyChanged 事件。这就是它在 WPF 中的工作方式,我认为 windows 窗体是相同或相似的。基本上,绑定需要一种方法来知道属性已更改,它通过处理该事件来做到这一点。

于 2012-08-31T01:05:36.380 回答