动态生成的控件,如何根据控件的name来查找该控件是否存在?
如:在容器picturebox1里面动态生成加载了n层picturebox控件,如何根据控件的name来查找该控件是否存在?
[解决办法]
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If EnumControls().Any(Function(x) x.Name = "PictureBox6") Then
MsgBox("存在")
Else
MsgBox("不存在")
End If
End Sub
Private Function EnumControls() As IEnumerable(Of Control)
Return Controls.OfType(Of Control)().Union(Controls.OfType(Of Control)().SelectMany(Function(x) EnumChildControls(x)))
End Function
Private Function EnumChildControls(parent As Control) As IEnumerable(Of Control)
Return parent.Controls.OfType(Of Control)().Union(parent.Controls.OfType(Of Control)().SelectMany(Function(x) EnumChildControls(x)))
End Function
End Class
[解决办法]
Function(x) x.Name = "PictureBox6" 这是一个函数
function (x as control) as bool
return x.name="picturebox6"
end function
[解决办法]
dim t_picture1 as PictureBox = EnumControls().First(Function(x) x.Name = "PictureBox6")