none
遍历窗体上所有的控件(包括在该窗体上的容器内的控件)的问题 RRS feed

  • 问题

  • 请问想实现如下功能:遍历窗体上所有的控件(包括在该窗体上的容器内的控件),控件name各不相同。如果该控件是我想要的类型则执行一段代码,请问该怎么做?我用controls.oftype不能获取容器内的控件,controls.find只能找到指定名称的控件。

    2009年8月15日 13:02

答案

  • 你好!
         可以使用递规的方式来遍历,使用的时候把form1.Controls作为参数传递给这个方法:
    1. Private Sub AccessControls(ByVal ctc As Control.ControlCollection)
    2.     For Each c As Control In ctc
    3.         '这里可以按自己的要求使用c
    4.        
    5.         If c.HasChildren Then
    6.             AccessControls(c.Controls)
    7.         End If
    8.     Next
    9. End Sub


    周雪峰
    • 已标记为答案 Freeso 2009年8月18日 7:41
    2009年8月16日 4:18
    版主

全部回复

  • 您好,可以通过用Controls写一个递归方法来获取所有的控件。
    2009年8月15日 13:23
  • 你好!
         可以使用递规的方式来遍历,使用的时候把form1.Controls作为参数传递给这个方法:
    1. Private Sub AccessControls(ByVal ctc As Control.ControlCollection)
    2.     For Each c As Control In ctc
    3.         '这里可以按自己的要求使用c
    4.        
    5.         If c.HasChildren Then
    6.             AccessControls(c.Controls)
    7.         End If
    8.     Next
    9. End Sub


    周雪峰
    • 已标记为答案 Freeso 2009年8月18日 7:41
    2009年8月16日 4:18
    版主
  • 谢谢了!

    2009年8月18日 7:41
  • 不客气啊!
    周雪峰
    2009年8月18日 8:56
    版主