以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  使用TabControl多窗口。如果打开的窗口又含用TabControl应该如何DIM  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=35268)

--  作者:ysq128
--  发布时间:2013/6/27 16:47:00
--  使用TabControl多窗口。如果打开的窗口又含用TabControl应该如何DIM

在正常窗口使用:

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

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

 


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


--  作者:Bin
--  发布时间:2013/6/27 17:01:00
--  
.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多窗口.foxdb


--  作者:ysq128
--  发布时间: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
--  发布时间:2013/6/27 17:29:00
--  
请使用我的例子,经过测试没有问题.
--  作者:ysq128
--  发布时间:2013/6/27 17:33:00
--  

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

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


--  作者:Bin
--  发布时间: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
--  发布时间:2013/6/28 9:19:00
--  
如果照这样调整了。那程序基本上又复杂多了。越来越不好维护了。看来使用TabControl多窗口还是不适合大一点的项目了。
想用多窗口怎么就这么麻烦呢。

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

--  作者:Bin
--  发布时间:2013/6/28 9:21:00
--  
你直接使用TabControl 就好了. 然后隐藏不需要的页面,  为何要建立窗口然后移植 这么麻烦呢
--  作者:ysq128
--  发布时间:2013/6/28 9:46:00
--  
如果是就几个的情况下。直接使用TabControl ,但如果项目太大的话。几十个窗口那肯定行不通的。

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

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

--  作者:jspta
--  发布时间:2013/6/28 13:17:00
--  

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