T.S。
解决了这个问题我试图得到一个对象的名字,但我找不到合适的命令
例如:
我有PicturetBoxes打电话" picX Something "。所以我使用for循环来检查第四个位置的对象名称的字符是否等于" X" (如果是 - 对象不可见)
我尝试过这个,但它不起作用:
For Each control In Me.Controls
If TypeOf control Is PictureBox Then
If control.Name(3) = "X" Then
DirectCast(control, PictureBox).Visible = False
End If
End If
Next
如何获取对象名称?
答案 0 :(得分:0)
如果您正在搜索PictureBox类型的控件,其第四个char位置的名称包含大写字母“X”,您可以写
' Using IEnumerable methods to isolate only the controls of type picturebox required
For Each pictBox In Me.Controls.OfType(Of PictureBox)().Where(Function(x) x.Name(3) = "X"c)
pictBox.Visible = false
Next
请记住,这仅适用于Form Controls容器中包含的控件。如果您的表单有更多容器(GroupBoxes,Panels)并且图片框包含在这些控件中,那么您需要遍历GroupBox或Panel控件集合。此方案需要递归函数来检查每个容器
Public sub HidePics(cc as Control.ControlCollection)
For Each controlObject In cc
Dim ctr = DirectCast(controlObject, Control)
HidePics(ctr.Controls)
Next
For Each pictBox In cc.OfType(Of PictureBox)().
Where(Function(x) x.Name(3) = "X"c)
pictBox.Visible = false
Next
End Sub
从表单代码中调用
HidePics(Me.Controls)
答案 1 :(得分:0)
请注意Me.Controls
仅列出放置的控件
直接在表格上。控件放在其他控件上
TabControls,GroupBoxes,SplitContainers将不会列出。您
如果您的图片框已打开,则必须对这些控件进行递归
另一个控制。
control.Name(3)
返回一个字符。所以使用字符文字
"X"c
默认情况下,字符串比较区分大小写,因此您将这样做
如果您正在搜索,则无法找到"X"
中的"picXSomething"
"x"
。
您不必投射图片框,因为所有控件都有
Visible
财产。