2017-01-22 9 views
0

から親フォームにユーザーコントロールを作成し、ボタンを押すだけで、次のコードが実行されます。このユーザーコントロールで私は親フォームを持っているユーザーコントロール

UCDataSetSearch dataSetSearch = new UCDataSetSearch(formStorage.Schema, "Schema"); 
InitializeUserControl(dataSetSearch); 

をユーザーがDataSetを選択し、その後でそれを変更することができます変更ボタンをクリックします。ただし、UserControlでそのボタンを押すと、親フォームに別のUserControlの新しいインスタンスが作成されます。

InitializeUserControlメソッドは、ユーザーコントロールをフォームのコントロールに追加し、その場所をフォームの特定のポイントに設定します。

答えて

0

InitializeUserControl()は、フォーム上公開メソッドである場合は、直接このようなFindForm()を利用し、それを呼び出すことができます。

// ... running from within the UserControl ... 
// assuming Form1 is the parent form (change as necessary) 
Form1 f1 = (Form1)this.FindForm(); 
UCDataSetSearch dataSetSearch = new UCDataSetSearch(formStorage.Schema, "Schema"); 
f1.InitializeUserControl(dataSetSearch); 

これはあなたのユーザーコントロールは今より少ないことを意味し密結合ソリューションであり、他のフォームとはもはや動作しないため、再利用可能です。

疎結合ソリューションは、ユーザーコントロールは、フォームが、それは自分自身に新しいインスタンスを追加する必要があります知っているようにカスタムイベントを上げています。

関連する問題