【发布时间】:2020-08-03 22:45:21
【问题描述】:
我正在尝试通过从不同的表单 (FrmOpenShop) 调用用户控件中的方法 (Reload_Dash) 来重新填充用户控件 (DashboardCTR) 上的 GridView,而不创建用户控件的新实例。
当使用这样的表单时,我完成了同样的任务:
foreach(Form appForm in Application.OpenForms)
{
if(appForm.Name=="formName")
{
(Application.OpenForms["formName"] as formName).MethodName;
}
}
但对于 Usercontrol,我不是如何完成此操作的用户,我希望我可以通过遵循上述方法来获得它,如下所示:
foreach(UserControl control in Application.OpenForms)
{
if(control.Name=="DashboardCTR")
{
(Application.OpenForms["DashboardCTR"] as DashboardCTR).Reload_Dash;
}
}
但这不起作用,一些想法会有所帮助。
谢谢。
【问题讨论】:
-
UserControl 不是放在表单上吗?
formInstance.UserControlName.MethodName()有什么问题?您只需确保将 UserControl 访问修饰符设置为internal或public。 -
您通过使用
Application.OpenForms采取了正确的方法来完成此任务。不要用那个。相反,将 REFERENCE 从一种形式传递到另一种形式并使用它。一种简单的方法是简单地调用Show(),但传入“this”Show(this)。然后显示的表单可以将.Owner属性转换为正确的表单类型并使用它...
标签: c# winforms user-controls