Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 用户控件隐藏和显示_.net_Vb.net_Winforms - Fatal编程技术网

.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)”,所以它是一样的!这就是你想要的还是不想要的?我还是不太明白:)部分。这是可以做到的,但我还是要把它们一个一个地藏起来!