に加入していない私は、双方向バインディングともValueChanged
イベントサポートValue
プロパティを持つカスタムコントロールを持っている:がのBindingSource ValueChangedイベント
public event EventHandler ValueChanged;
[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
public virtual MyObject Value
{
get { return this.value; }
set
{
this.value = value;
OnValueChanged(new EventArgs());
}
}
private void OnValueChanged(EventArgs e)
{
EventHandler handler = ValueChanged;
if (handler != null)
handler(this, e);
}
フォームとデータの上に置かれたときに、このコントロールは正常に動作しますデザイナーで設定されたバインディングです。バインディングソースはイベントに正しくサブスクライブし、それに応じて基礎となるデータソースが更新されます。
さて、私は次の操作を実行して、動的にコントロールを作成しています:
MyControl ctl = new MyControl();
ctl.DataBindings.Add(new Binding("Value", this.bindingSource, "SomeField", true, DataSourceUpdateMode.OnPropertyChanged));
ただし、これを行うことによって、のBindingSourceはValueChanged
イベントに加入していません。私はデザイナーによって生成されたコードをチェックしましたが、バインディングソースをイベントに登録させるコードはありません。私は、データバインディングにバインディングを追加すると、これを行う必要がありますが、それはしないと仮定します。
ここでは何が間違っていますか?
このスニペットありがとうございます。バインディングが発生しているかどうかを確認し、データソースに値が設定されていない理由を理解できます。 –