【发布时间】:2023-03-10 13:54:01
【问题描述】:
我有一个 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 项目有何建议?
【问题讨论】:
-
不能是控件列表属性中的控件。看起来他们将其抽象为工具条的一个特殊部分,称为 ToolStripItem,它不是从 Control 派生的。
-
ToolStripItems 是特殊的,它们不是从 Control 派生的。所以你不能那样找到它们,你为什么需要它来工作并不明显。
-
@HansPassant 感谢您提供的信息。长话短说,我试图在计算过程中禁用某些 ToolStripItems。最终,我将提出禁用 ToolStrip 的解决方案。