我有一个父表单,只需按一下按钮,就会运行以下代码:
UCDataSetSearch dataSetSearch = new UCDataSetSearch(formStorage.Schema, "Schema");
InitializeUserControl(dataSetSearch);
在此UserControl上,用户选择了一个DataSet,然后可以通过单击“修改”按钮对其进行修改,但是在UserControl中按下该按钮的正确方法是什么,然后在父窗体上创建另一个UserControl的新实例?
InitializeUserControl方法只需要一个用户控件并将其添加到表单的控件中,并将其Location设置为表单中的特定点。
答案 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引发自定义事件,让表单知道它应该为自己添加新实例。