Foxtable(狐表)用户栏目专家坐堂 → 想获得容器所在form,应该用什么方法?


  共有2124人关注过本帖树形打印复制链接

主题:想获得容器所在form,应该用什么方法?

帅哥哟,离线,有人找我吗?
wfkbabro
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:265 积分:2399 威望:0 精华:0 注册:2011/10/21 17:07:00
想获得容器所在form,应该用什么方法?  发帖心情 Post By:2021/1/2 11:25:00 [只看该作者]

大神们,请教一下 想获得容器 所在form,应该用什么方法?
容器是函数的一个传入参数,是不固定的,可能是各层级的控件、或容器、或容器

容器是: Forms("窗口1_MAIN").controls("TabControl1").TabPages(1)
目前 想用Parent 的  Typeof OBJ is来判断是否 form,但不知道  is 后写什么。
也想用 Forms("窗口1_MAIN").controls("TabControl1").TabPages(1).controls(0).form ,但没试成功。

[此贴子已经被作者于2021/1/2 11:24:45编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/3 10:58:00 [只看该作者]

Output.Show(Typeof Forms("窗口1_MAIN").controls("TabControl1").TabPages(1).parent Is C1.Win.C1Command.C1DockingTab)

 回到顶部
帅哥哟,离线,有人找我吗?
wfkbabro
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:265 积分:2399 威望:0 精华:0 注册:2011/10/21 17:07:00
  发帖心情 Post By:2021/1/3 13:34:00 [只看该作者]

谢谢蓝版,向上1级parent是 TabControl1,再上一级是 form,在用递归判断是form则中止而得到forms(..),

这应该用什么is ? 如果自己想百度,应该怎么搜索能得到类似于“C1.Win.C1Command.C1DockingTab”的知识,感谢。

output.show(Forms("窗口1_MAIN").controls("TabControl1").TabPages(1).parent.parent.name)


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/3 14:25:00 [只看该作者]


既然知道控件名称,直接使用output.show(Forms("窗口1_MAIN").controls("TabControl1").form.name)即可

特殊一点的如TabPages,只能是另外处理一下
Dim tab As WinForm.TabControl = Forms("窗口1_MAIN").Controls("TabControl1")
output.show(Forms("窗口1").controls(tab.TabPages(0).parent.name).Form.name)

 回到顶部
帅哥哟,离线,有人找我吗?
wfkbabro
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:265 积分:2399 威望:0 精华:0 注册:2011/10/21 17:07:00
  发帖心情 Post By:2021/1/3 15:59:00 [只看该作者]

谢谢蓝版。 针对某些层级的容器或控件,.form是失效的。

比如这个会报错:output.show(Forms("窗口1_MAIN").controls("TabControl1").TabPages(1).Form.name)      =>未找到类型"TabPage"的公共成员"Form"

而您也给出了针对这些特殊情况的处理方法(如上楼),谢谢。 

 

尝试用 

     ' output.show(Forms("窗口1_MAIN").controls("TabControl1").TabPages(1).parent.parent.name)
     ' Output.Show( Forms("窗口1_MAIN").controls("TabControl1").TabPages(1).parent.parent.Gettype().fullname)
     ' output.show(Forms("窗口1_MAIN").controls("TabControl1").parent.name)
     ' Output.Show( Forms("窗口1_MAIN").controls("TabControl1").parent.Gettype().fullname)

得到的窗口名相同,但类型完全不一样:

     ' 窗口1_MAIN
     ' Foxtable.FormPanel
     ' 窗口1_MAIN
     ' Foxtable.WinForm.Form

 

所以想学习一下怎么去查类似的参考,感觉foxtable很多细节需要自己去学习:)

[此贴子已经被作者于2021/1/3 16:00:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/3 16:16:00 [只看该作者]

经验+百度+系统学习一下vb.net

 回到顶部