以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 怎么按位置引用窗口集合中的窗口名称呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=150435)

--  作者:龙潭春早
--  发布时间:2020/5/29 21:09:00
--  [求助] 怎么按位置引用窗口集合中的窗口名称呢?
想按位置引用窗口集合中的窗口名称,在命令窗口执行下面的代码,显示 “ 不存在名称为 “0”  的窗口!”。

要怎么改呢?

For i As Integer = 0 To Forms.Count - 1
    OutPut.Show(Forms(i).Name)
Next



--  作者:y2287958
--  发布时间:2020/5/29 21:12:00
--  
For Each f As WinForm.Form In Forms
    OutPut.Show(F.Name)
Next

--  作者:龙潭春早
--  发布时间:2020/5/29 21:17:00
--  
嗯 这个是常规的遍历方法。

这里是想按照 “位置” 来引用,有什么办法吗?

--  作者:y2287958
--  发布时间:2020/5/29 21:18:00
--  
那就用一个集合记录名称即可
--  作者:龙潭春早
--  发布时间:2020/5/29 21:38:00
--  
具体怎么做呢?
--  作者:y2287958
--  发布时间:2020/5/29 21:59:00
--  
Dim lst As new List(of String)
For Each f As WinForm.Form In Forms
    lst.add(f.Name)
Next
OutPut.Show(Forms(lst(0)).Name)


--  作者:龙潭春早
--  发布时间:2020/5/29 22:43:00
--  
嗯 多谢大神!

顺便请教一下:

一楼的 Forms(i),应该就是第 i 位置的窗口了吧,

那么 Forms(i).Name,应该就是第 i 位置窗口的名称了。

但是,为什么不行呢?

--  作者:有点蓝
--  发布时间:2020/5/30 9:21:00
--  
Forms不是普通的集合,是一个自定义的类型,没有索引用法,
--  作者:龙潭春早
--  发布时间:2020/6/9 17:22:00
--  
嗯 也就是说,集合和集合的性能也不完全一样。

只有具备索引用法的集合,才能按位置来引用,如 行集合 Rows(0),列集合 Cols(3),节点集合 Nods(1)等。

而窗口集合 Forms是不具备索引用法的集合,所以不能按位置来引用。
--  作者:有点蓝
--  发布时间:2020/6/9 17:30:00
--  
是的