以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=45202)

--  作者:yld
--  发布时间:2014/1/18 9:57:00
--  [求助]
如何获取指定窗口的所有控件名?我的代码有何问题,请指教。
For Each ctl As WinForm.Control In Forms("窗口1").Controls
      MessageBox.Show(ctl.name)
next

谢谢!

--  作者:Bin
--  发布时间:2014/1/18 9:59:00
--  
代码有什么问题? 没问题啊?
--  作者:yld
--  发布时间:2014/1/18 10:02:00
--  
但出错了。


--  作者:Bin
--  发布时间:2014/1/18 10:12:00
--  
出什么错?
--  作者:Bin
--  发布时间:2014/1/18 10:14:00
--  
如果你是在命令窗口,或者其他任何非本窗口的地方运行,你要确保窗口处于打开状态,否则是获取不到的,是会报错的.

如果希望不报错,加个判断,判断一下窗口处于打开状态再执行即可.
if Forms("窗口1").Opened then
For Each ctl As WinForm.Control In Forms("窗口1").Controls
      MessageBox.Show(ctl.name)
next
end if



--  作者:yld
--  发布时间:2014/1/18 10:17:00
--  
大概意思是,没有指定控件类型,如是本窗口( e.Form.Controls )就可以。


--  作者:Bin
--  发布时间:2014/1/18 10:19:00
--  
上例子,没有道理哦. 弹出控件名是不需要指定控件类型的.
--  作者:Bin
--  发布时间:2014/1/18 10:19:00
--  
而且我测试过代码也没有问题.
--  作者:yld
--  发布时间:2014/1/18 10:35:00
--  
如果我要的是没有打开的窗口中的控件呢?
--  作者:Bin
--  发布时间:2014/1/18 10:36:00
--  
没办法获取未打开的窗口的控件名,其他相关请看5楼.