从用户控件在父窗体上创建UserControl

时间:2017-01-22 18:56:19

标签: c# user-controls

我有一个父表单,只需按一下按钮,就会运行以下代码:

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

在此UserControl上,用户选择了一个DataSet,然后可以通过单击“修改”按钮对其进行修改,但是在UserControl中按下该按钮的正确方法是什么,然后在父窗体上创建另一个UserControl的新实例?

InitializeUserControl方法只需要一个用户控件并将其添加到表单的控件中,并将其Location设置为表单中的特定点。

1 个答案:

答案 0 :(得分: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);

这是一个紧密耦合的解决方案,这意味着您的UserControl现在不再可用,因为它无法再与其他表单一起使用。

松散耦合解决方案会让UserControl引发自定义事件,让表单知道它应该为自己添加新实例。