Foxtable(狐表)用户栏目专家坐堂 → 使用TabControl多窗口。如果打开的窗口又含用TabControl应该如何DIM


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

主题:使用TabControl多窗口。如果打开的窗口又含用TabControl应该如何DIM

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


加好友 发短信
等级:童狐 帖子:251 积分:2594 威望:0 精华:0 注册:2011/4/27 11:37:00
使用TabControl多窗口。如果打开的窗口又含用TabControl应该如何DIM  发帖心情 Post By:2013/6/27 16:47:00 [只看该作者]

在正常窗口使用:

Dim t As WinForm.TabControl = e.Form.Controls("TabControl1")
MessageBox.show(t.SelectedPage.Name)

现在我在用TabControl多窗口。上面的语句就会报错了。
居然是找不到名称为TabControl1的控件。

 


图片点击可在新窗口打开查看此主题相关图片如下:报错.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:tabcontrol多窗口.rar


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/27 17:01:00 [只看该作者]

.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多窗口.foxdb


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


加好友 发短信
等级:童狐 帖子:251 积分:2594 威望:0 精华:0 注册:2011/4/27 11:37:00
  发帖心情 Post By:2013/6/27 17:22:00 [只看该作者]

如果在多窗口下,代码不是在该控件事件内。又应该怎么DIM?
在文本框内要 DIM 这个TabControl1

 

Dim t As WinForm.TabControl = Forms("窗体").Controls("TabControl1")
MessageBox.show(t.SelectedPage.Name)

同样是找不到控件。

[此贴子已经被作者于2013-6-27 17:24:43编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/27 17:29:00 [只看该作者]

请使用我的例子,经过测试没有问题.

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


加好友 发短信
等级:童狐 帖子:251 积分:2594 威望:0 精华:0 注册:2011/4/27 11:37:00
  发帖心情 Post By:2013/6/27 17:33:00 [只看该作者]

你的例子是因为放在当前控件下面事件。
所以用Dim t As WinForm.TabControl = e.Sender没有问题。

我实际的需求还需要在其它的控件中操作该控件。所以是不能用e.Sender
那应该怎么操作才行?


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/27 17:52:00 [只看该作者]

因为你使用的是动态移植了,所以并不是原来的控件了,你使用名称没办法获得.

1.要么你在移植的时候给它赋值Name属性

2. 或者使用以下代码


For Each c As WinForm.Control In Forms("窗口_导航").Controls
    If Typeof c Is WinForm.Panel AndAlso c.Name="Panel1" Then '判断控件是否是文本框
        Dim t As WinForm.Panel = c '使用特定类型的变量引用控件
        For Each Cl As WinForm.Control In t.Children
            If Typeof Cl Is WinForm.TabControl Then
                Dim t2 As WinForm.TabControl = cl
                MessageBox.show(t2.SelectedPage.Name)
            End If
        Next
    End If
Next


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


加好友 发短信
等级:童狐 帖子:251 积分:2594 威望:0 精华:0 注册:2011/4/27 11:37:00
  发帖心情 Post By:2013/6/28 9:19:00 [只看该作者]

如果照这样调整了。那程序基本上又复杂多了。越来越不好维护了。看来使用TabControl多窗口还是不适合大一点的项目了。
想用多窗口怎么就这么麻烦呢。

图片点击可在新窗口打开查看此主题相关图片如下:snap2.jpg
图片点击可在新窗口打开查看
官方是不是应该出一个方便一点的解决方案好一点哦。
项目大一点没有分页多窗口有些地方不太顺手呀。而且如果是独立窗体的时候。对表数据操作快捷键都不支持的。如Ctrl+D等

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/28 9:21:00 [只看该作者]

你直接使用TabControl 就好了. 然后隐藏不需要的页面,  为何要建立窗口然后移植 这么麻烦呢

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


加好友 发短信
等级:童狐 帖子:251 积分:2594 威望:0 精华:0 注册:2011/4/27 11:37:00
  发帖心情 Post By:2013/6/28 9:46:00 [只看该作者]

如果是就几个的情况下。直接使用TabControl ,但如果项目太大的话。几十个窗口那肯定行不通的。

图片点击可在新窗口打开查看此主题相关图片如下:snap4.jpg
图片点击可在新窗口打开查看
就像浏览器

图片点击可在新窗口打开查看此主题相关图片如下:snap5.jpg
图片点击可在新窗口打开查看
没有这个Tab会多么的不方便。

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/6/28 13:17:00 [只看该作者]

把窗口设置为并列窗口,你可以试试效果


 回到顶部
总数 12 1 2 下一页