vb.net - vb.net 查找winform中的所有子控件
问题描述
我有一个 win 表单应用程序,其中一个表单在不同的容器(FlowLayoutPanels)和 ToolStrip 控件中有许多控件。我需要在表单(和容器)中找到所有子控件。以下递归函数在一定程度上起作用,但它无法在 ToolStrip、MenuStrip 和类似控件项(按钮、标签、组合框等)中找到子元素。
Public Sub FindChildren(ByVal parentCtrl As Control, ByRef children As List(Of Control))
If parentCtrl.HasChildren Then
For Each ctrl As Control In parentCtrl.Controls
children.Add(ctrl)
Call FindChildren(ctrl, children)
Next ctrl
End If
End Sub
对如何枚举 ToolStrip 项目有任何建议吗?
解决方案
您可以将列表更改为对象列表并使用以下代码:
Public Sub FindChildren(ByVal parentCtrl As Control, ByRef children As List(Of Object))
If parentCtrl.HasChildren Then
For Each ctrl As Control In parentCtrl.Controls
If TypeOf ctrl Is ToolStrip Then
Dim toll As ToolStrip
toll = ctrl
For Each item In toll.Items
children.Add(item)
Next item
End If
children.Add(ctrl)
Call FindChildren(ctrl, children)
Next ctrl
End If
End Sub
推荐阅读
- multithreading - 当线程被调度在不同的 CPU 内核上时,预期的内存语义(例如写入后读取)会发生什么情况?
- python-3.x - Python 中的动态类创建:TypeError: __init__() 采用 1 个位置参数,但给出了 2 个
- python - 使用 Python Selenium webdriver 时出现站点阻塞和验证码
- python - 访问下拉菜单中的选项时获取“StaleElementReferenceException”
- java - 如何在一行中显示数组列表中的所有项目
- c# - 解析器导致“文档没有页面”
- statistics - 你能从 Orange 的“特征统计”工具中创建一个表格输出吗?
- r - R sum vectors in list of list
- logging - Serilog 解构特定于接收器的策略
- visual-studio - Microsoft Quantum Development Kit 对称密钥加密