关于将控件属性绑定到自定义类属性的问题

之前有不少朋友都提及到这样一个问题:为什么使用textBox1.DataBindings.Add("Text",myObject,"dataMember")绑定TextBox的Text属性后,当通过代码修改自定义类实例myObject的属性dataMember的值时,TextBox显示的值没有自动改变呢?

今天特意写写就我个人关于该问题的解决方案

要想解决问题就必须先找出造成该问题的根本,先用Reflector查看System.Windows.Forms.Binding这个类,发现他有个私有方法CheckBinding,打开来看看,一直往下找就能见到下面的这段代码了:

Type type2 = this.propInfo.PropertyType;
if (((descriptor2 != null) && (descriptor2.PropertyType == typeof(bool))) && !descriptor2.IsReadOnly)
{
      this.propIsNullInfo = descriptor2;
}
EventDescriptor descriptor3 = null;
string text2 = this.propertyName + "Changed";
EventDescriptor descriptor4 = null;
string text3 = "Validating";
EventDescriptorCollection collection2 = TypeDescriptor.GetEvents(this.control);

注意字体特别大的那行,到这里应该大家都知道问题出在什么地方了吧?

没错,就是在您自定义的类里面少了名为this.propertyName + "Changed"的事件,如果以我上面那句为例,那么这里应该定义事件的名就是dataMemberChanged,所以只要在您自定义的类里面添加这个事件的定义就一切都OK了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值