如何获取特定类型的Windows窗体(Button/TextBox)的所有子控件?

如何获取特定类型的Windows窗体(Button/TextBox)的所有子控件?

我需要在x类型的表单上获得所有控件。

dim ctrls() as Controlctrls = Me.Controls(GetType(TextBox))

我知道我可以使用递归函数迭代所有控件-获取子控件,但是是否有更简单或更简单的方法,比如下面的内容?

Dim Ctrls = From ctrl In Me.Controls Where ctrl.GetType Is Textbox


呼唤远方
浏览 946回答 3
3回答

ABOUTYOU

这是递归GetAllControls()的一个改进版本,它实际上在私有vars上工作:&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Test() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<Control>&nbsp;allTextboxes&nbsp;=&nbsp;GetAllControls(this); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;List<Control>&nbsp;GetAllControls(Control&nbsp;container,&nbsp;List<Control>&nbsp;list) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(Control&nbsp;c&nbsp;in&nbsp;container.Controls) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(c&nbsp;is&nbsp;TextBox)&nbsp;list.Add(c); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(c.Controls.Count&nbsp;>&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;=&nbsp;GetAllControls(c,&nbsp;list); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;list; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;List<Control>&nbsp;GetAllControls(Control&nbsp;container) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;GetAllControls(container,&nbsp;new&nbsp;List<Control>()); &nbsp;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP