我目前有一个Windows窗体,它包含各种用户控件,可以通过单击按钮显示,只显示已选择的用户控件,通常这可以正常使用代码
Checkworkcontrol1.Show()
Gradescontrol1.Hide()
Submissioncontrol1.Hide()
上面的代码在我的Windows窗体中用于显示特定的用户控件,但我有一个例外,我正在尝试实现,在一个用户控件中我有一个按钮,将显示另一个用户控件窗口形式,但当我尝试实现相同的方法时,它什么都不做。
Mainpage.Submissioncontrol1.Show()
Mainpage.Gradescontrol1.Hide()
Mainpage.Checkworkcontrol1.Hide()
“主页”是Windows窗体
答案 0 :(得分:0)
在用户控件中,您需要对表单的引用。从表单上的任何控件,您可以调用FindForm()
来检索控件所在的表单。同时将其转换为正确的表单类型(表单名称),以便能够访问它的特定成员。
Dim frm = DirectCast(FindForm(), Mainpage) ' Where Mainpage is the name of the form.
frm.Submissioncontrol1.Show()
frm.Gradescontrol1.Hide()
frm.Checkworkcontrol1.Hide()
在主窗体上,这些控件必须Public
(或Friend
)才能从用户控件访问。
此外,我强烈建议您使用Option Strict On
和Option Explicit On
,因为这会在编译时显示很多错误。请参阅:What do Option Strict and Option Explicit do?。
如果Mainpage
是表单的名称,那么您的代码无效,因为您的表单是Class
,即Mainpage
是一种类型,而不是表单对象。