无法在vb.net中以其他用户控件的形式显示用户控件

时间:2018-03-10 23:52:26

标签: vb.net winforms

我目前有一个Windows窗体,它包含各种用户控件,可以通过单击按钮显示,只显示已选择的用户控件,通常这可以正常使用代码

Checkworkcontrol1.Show() Gradescontrol1.Hide() Submissioncontrol1.Hide()

上面的代码在我的Windows窗体中用于显示特定的用户控件,但我有一个例外,我正在尝试实现,在一个用户控件中我有一个按钮,将显示另一个用户控件窗口形式,但当我尝试实现相同的方法时,它什么都不做。

Mainpage.Submissioncontrol1.Show() Mainpage.Gradescontrol1.Hide() Mainpage.Checkworkcontrol1.Hide()

“主页”是Windows窗体

1 个答案:

答案 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 OnOption Explicit On,因为这会在编译时显示很多错误。请参阅:What do Option Strict and Option Explicit do?

如果Mainpage是表单的名称,那么您的代码无效,因为您的表单是Class,即Mainpage是一种类型,而不是表单对象。