以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何获取窗口中所有控件的名称包括容器中的控件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=126141)

--  作者:hbhb
--  发布时间:2018/10/15 13:53:00
--  如何获取窗口中所有控件的名称包括容器中的控件
大师:请问如何获取窗口中所有控件的名称也包括包括容器中的控件名?
--  作者:有点甜
--  发布时间:2018/10/15 14:15:00
--  

For each c as object in e.form.controls

 

Next


--  作者:hbhb
--  发布时间:2018/10/15 14:33:00
--  
那为何在命令窗口执行如下代码,不能全部显示所有控件?

Dim frm = windows.Forms.Form.activeform
If frm IsNot Nothing Then
MessageBox.Show(frm.text)
For Each kj As object In frm.controls

MessageBox.Show(kj.name)


Next
End If

--  作者:有点甜
--  发布时间:2018/10/15 14:56:00
--  

不是foxtable设计的窗口,无法这样处理,需要写递归函数处理。类似嵌套n个循环,如

 

 

Dim frm = windows.Forms.Form.activeform
If frm IsNot Nothing Then
    MessageBox.Show(frm.text)
    For Each kj As object In frm.controls
        output.show(kj.name & " " & kj.Gettype.name)
        If kj.Gettype.name = "SplitContainer" OrElse kj.Gettype.name = "SplitterPanel" Then
            For Each kkj As object In kj.controls
                output.show(kkj.name & " " & kkj.Gettype.name)
                If kkj.Gettype.name = "SplitContainer" OrElse kkj.Gettype.name = "SplitterPanel" Then
                    For Each kkkj As object In kkj.controls
                        output.show(kkkj.name & " " & kkkj.Gettype.name)
                    Next
                End If
               
            Next
        End If
    Next
End If

 

http://www.foxtable.com/webhelp/scr/2416.htm

 


--  作者:hbhb
--  发布时间:2018/10/15 17:37:00
--  
谢谢!帮我写一个递归函数如何?
--  作者:有点甜
--  发布时间:2018/10/15 17:44:00
--  
看懂4楼,自食其力