继承TextBox的一自定义控件,加入如下属性:private object value;[Bindable(true)]
public object Value
{
    get { return this.value; }
    set { this.value = value;}
}然后通过control.DataBindings.Add("Value", dataSource, columnName, true);绑定数据。
其中dataSource为BindingSource数据源。正常来讲,只有在控件上改变值,才会触发dataSource绑定数据表的ColumnChanged事件。
可现在是当dataSource移动浏览数据时,也会触发ColumnChanged事件。并且当光标进入控件时然后又离开,此时也会触发ColumnChanged事件。不知是怎么回事,请高手相助。

解决方案 »

  1.   

    [Bindable(true)]
    public object Value
    {
        get { return this.value; }
        set {
          if (this.value != value)
          {
            this.value = value;
            OnValueChanged(this, EventArgs.Empty);
          }
        }
    } public event EventHandler ValueChanged;// 属性名Changed 是数据绑定中的一个范式
    // 绑定引擎自动会订阅protected virtual void OnValueChanged(object sender, EventArgs e)
    {
      if (ValueChanged != null)
        ValueChanged(sender, e);
    }
      

  2.   

    就是这个原因,多谢Dobzhansky!!!