.net 用户控件隐藏和显示
我有几个用户控件,它们显示在我的主窗体中 让我们说我想要的是:.net 用户控件隐藏和显示,.net,vb.net,winforms,.net,Vb.net,Winforms,我有几个用户控件,它们显示在我的主窗体中 让我们说我想要的是: Sub Show_Control1() UserControl1.Show 'CODE TO HIDE EVERY OTHER DISPLAYED USER CONTROL ON THE MAIN FORM End sub 现在我必须用hide一个接一个地隐藏它们,因为我不知道当前显示的表单是什么。尝试一下: Sub Show_Control1() For Each cont In Me.Controls cont.Hid
Sub Show_Control1()
UserControl1.Show
'CODE TO HIDE EVERY OTHER DISPLAYED USER CONTROL ON THE MAIN FORM
End sub
现在我必须用hide一个接一个地隐藏它们,因为我不知道当前显示的表单是什么。尝试一下:
Sub Show_Control1()
For Each cont In Me.Controls
cont.Hide
Next cont
UserControl1.Show
End sub
这将基本上隐藏所有控件,然后仅显示所需的控件。如果每个控件不是您希望保持可见的控件,则比检查每个控件更快、更简单。我在Windows窗体应用程序(.NET 4)上尝试了您的情况,下面的操作成功了。我不知道为什么你使用<代码> GETType(T1)是GetType(T2)< /C>不工作(也许它有不同的语义,比如它不考虑继承),但是你可以用这个代替:
Sub Show1()
For Each ctrl As Control In Controls
If TypeOf ctrl Is UserControl Then
ctrl.Hide()
End If
Next
UserControl11.Show()
End Sub
更新:
我查看了MSDN以了解为什么您的代码不起作用。首先,TypeOf。。Is
运算符用于检查一种类型的对象是否与另一种类型的对象兼容。以下是他们在MSDN上的文章(链接:)所说的:
TypeOf关键字引入了一个比较子句,用于测试对象是否派生自或实现特定类型,例如接口
但是,您使用的是Is关键字(与在C#中用于检查对象是否属于某种特定类型的关键字非常不同)。“Is”关键字用于检查两个引用是否引用同一对象。以下是MSDN(链接:)上的内容:
[Is]比较两个对象引用变量
所以我是对的:您使用的运算符的语义与您的意图不同。我现在很少写VB.NET代码。问得好。请不要在标题前加上“Visual Basic.NET-”之类的前缀。这就是标签的用途。正是我想要的,但我有很多用户控件。但它不适用于“gettype是usercontrol”,它适用于“gettype是USERCONTROLNAME”,我有很多表单!不知道你说的是什么意思。你能解释一下吗?我有两个用户控件-TestUserControl和UserControl1。我使用“ctrl.GetType()Is GetType(UserControl)”仅隐藏用户控件表单,因为您的代码隐藏了所有内容。但我不能像使用txtboxs一样,只键入“ctrl.GetType()是GetType(UserControl)”并将它们全部隐藏。我必须写“ctrl.GetType()是GetType(UserControlNAME)”,所以它是一样的!这就是你想要的还是不想要的?我还是不太明白:)部分。这是可以做到的,但我还是要把它们一个一个地藏起来!