0

多くのユーザー入力コントロールを備えたフォームがあります。それらのほとんどはオプションであり、私の手に負えない理由で、必要な要素がフォームの周りに散らばっています。元のフォーム (以降、ParentForm と呼びます) にリンクされ、ParentForm から必要なコントロールのみを持つ 2 番目のフォーム (以降、ChildForm と呼びます) を開くボタンを追加するように依頼されました。

ChildForm のコントロールを、ParentForm の対応するコントロールと同じデータソースにリンクしたいと考えています。このリンケージをプログラムでループ内に作成して、後で ParentForm を変更したときに、ChildForm コントロールのデータバインディングを手動で編集する必要がないようにしたいと考えています。

試してみChildControl.DataBindings.Add(ParentControl.DataBindings[0]);ましたがdataBinding belongs to another BindingsCollection、実行時に ArgumentException が発生します。

コントロールごとに手動で行うことなく、新しいコントロールを既存のコントロールと同じ DataTable の列にバインドするにはどうすればよいですか?

4

1 に答える 1

3

単純な場合(およびイベント ハンドラーが登録されBindingていない場合)、次のように浅いクローンを作成できます。FormatParse

public void CloneBinding(Control control, Binding bind){
   Binding bind = new Binding(bind.PropertyName, bind.DataSource, bind.BindingMemberInfo.BindingMember);
   control.DataBindings.Add(bind);
}
//Use it
CloneBinding(ChildControl, ParentControl.DataBindings[0]);
于 2013-09-06T16:56:03.563 に答える