求VB选项卡TabStrip的用法

一个窗体中有三个选项卡,卡头分别为“一系列”、“二系列”、“汇总”第一个选项卡“一系列”中,有两个文本框txtA1、txtA2,都是数据类型。还有一个按钮Button1,... 一个窗体中有三个选项卡,卡头分别为“一系列”、“二系列”、“汇总”
第一个选项卡“一系列”中,有两个文本框txtA1、txtA2,都是数据类型。还有一个按钮Button1,点击按钮后,变量a= txtA1*txtA2;
第二个选项卡“二系列”中,有两个文本框txtB1、txtB2,都是数据类型。还有一个按钮Button2,点击按钮后,变量b= txtB1*txtB2;
第三个选项卡“汇总”中,有两个文本框txtC1、txtC2,都是数据类型。还有一个按钮Button3,点击按钮后,变量x= txtA1+ txtB1,变量y= a+b。
其实我的程序里远不止这些,以上只是一个简化了的模型,我想通过以上的模型学会选项卡的用法。
对选项卡我是一窍不通,只知道它不是容器。请高手指点,要怎么设计布局,务求详细,并求代码。
详细的有加分,我有很多分的……
展开
 我来答
cnxh2007
推荐于2018-04-13 · TA获得超过999个赞
知道小有建树答主
回答量:476
采纳率:86%
帮助的人:379万
展开全部
按照你的要求把代码写出来了,请留意FORM_LOAD事件里的代码,那里主要写了tab控件的布局以及如何跟frame容器关联
程序需要1个tabstrip,3个frame(控件数组)还有6个textbox和3个button
Dim a, b, x, y As Integer

Private Sub Command1_Click()
a = Val(txta1) * Val(txta2)
End Sub

Private Sub Command2_Click()
b = Val(txtb1) * Val(txtb2)
End Sub

Private Sub Command3_Click()
x = Val(txta1) + Val(txtb1)
y = a + b
txtC1 = x
txtC2 = y
End Sub

Private Sub Form_Load()
Dim i As Integer

'初始化每一个 tab page
TabStrip1.Tabs(1).Caption = "一系列"
TabStrip1.Tabs.Add , , "二系列"
TabStrip1.Tabs.Add , , "Total"
TabStrip1.Tabs(1).Selected = True

'初始化三个frame大小以匹配tab控件
For i = 0 To 2
Frame1(i).Width = TabStrip1.ClientWidth 'tab内部宽度
Frame1(i).Height = TabStrip1.ClientHeight 'tab内部高度
Frame1(i).Left = TabStrip1.ClientLeft 'tab内部左间柜
Frame1(i).Top = TabStrip1.ClientTop 'tab内部顶部间拒
Frame1(i).Visible = False
Next i

Frame1(TabStrip1.SelectedItem.Index - 1).Visible = True '把被选中的tab对应的frame显示出来
End Sub

Private Sub TabStrip1_Click()
Call frame_visible_false
Frame1(TabStrip1.SelectedItem.Index - 1).Visible = True '把被选中的tab对应的frame显示出来

End Sub

'默认先把所有frame控件隐藏起来
Private Sub frame_visible_false()
Dim i As Integer
For i = 0 To 2

Frame1(i).Visible = False
Next i

End Sub
c20090218
2010-08-23 · TA获得超过255个赞
知道答主
回答量:161
采纳率:0%
帮助的人:195万
展开全部
选项卡看起来确实不是容器,但是,我们可以用 PictureBox 代替行使容器的职能啊!将 PictureBox 放到 TabStrip 的上面,然后取消边框,看起来就像是 TabStrip 本身作为容器一样。
思路如下:
1、新建 TabStrip,开几个选项卡(比如,3个)。
2、新建 PictureBox 控件数组(Picture1(0)-Picture1(2))。
3、编写过程。这里以3个为例。

Private Sub TabStrip1_Click
Dim lC As Long
For lC = 0 To Picture1.Count - 1
Picture1(lC).Visible = IIf((lC = TabStrip1.TabIndex - 1), True, False)
Next lC
End Sub

然后将所需要的控件放到 PictureBox 里面(注意“里面”两个字)。将每个 PictureBox 的 BorderStyle 设置为0,然后摆放一下,和 TabStrip 看起来和谐就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ynisue
2010-08-23 · TA获得超过958个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:466万
展开全部
想法就是每个tab上都放一个frame容器控件装好本页里面的控件。重叠放在一起,只有默认的frame设visible=true。运行时看你CLICK到那个TAB上就显示那个页面。

下面是从MSDN里面拷贝的,⊙﹏⊙b汗。
==================================================================
TabStrip 控件不是容器。要想包含实际页面和它们的对象,必须用 Frame 控件或者其它容器,它们的大小必须与控件中所有 Tab 对象共享的内部区域匹配。如果针对该容器使用了一个控件数组,则可以使特定的 Tab 对象与数组中的每一项相关联,请看下例:

Option Explicit
Private mintCurFrame As Integer' Current Frame visible

Private Sub Tabstrip1_Click()
If Tabstrip1.SelectedItem.Index = mintCurFrame _
Then Exit Sub ' No need to change frame.
' Otherwise, hide old frame, show new.
Frame1(Tabstrip1.SelectedItem.Index).Visible = True
Frame1(mintCurFrame).Visible = False
' Set mintCurFrame to new value.
mintCurFrame = Tabstrip1.SelectedItem.Index
End Sub

注意 在容器上将控件分组时,必须使用上述显示/隐藏策略,而不使用 Zorder Method 将框架带到全面来。否则,实现访问键(ALT + 访问键)的控件将一直响应键盘命令,甚至当容器不是最顶端的控件时也如此。还要注意,必须将每个组放在它自己的容器中,以此将 OptionButton 控件的组分离开,否则,窗体上的所有 OptionButtons 将象一大组 OptionButtons。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式