C# winform自定义控件属性
现有自定义控件,内有一textbox控件 TextBox1。控件有一属性 Value
定义为
[BrowsableAttribute(true)]
[BindableAttribute(true)]
public string Value
{
get{return TextBox1.Text;}
set{TextBox1.Text =value;}
}
将该控件的实例绑定到窗体的bindingSource1上
this.userControl11.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.bindingSource1, "SubTitle", true));
当使用bindingSource1.Position发生改变时跟踪发现会触发Value的Get事件并且
并会触发bindingSource1的BindingComplete事件。跟踪发现e.BindingCompleteContext 此时的值为DataSourceUpdate。也就是说数据集认为业务对象的内容在发生变化。
但如果绑定的是一个普通控件,则不会触发该事件。
跟踪了 当bindingSource.Current发生变更时,自定义属性和控件的普通控件属性的区别:
自定义的属性:会触发2次BindingComplete事件 一次是BindingCompleteContext.ControlUpdate 控件把值更新到变更前的bindingSource行
第二次是BindingCompleteContext.DataSourceUpdate,bindingSource的新行把数据给控件
普通控件属性:只触发后面一次