使用tabstrip控件

TabStrip 控件就象笔记本的书签或者一组文件夹的标签一样。通过使用 TabStrip 控件,可以在应用程序中为某个窗口或者对话框的相同区域定义多个页面

添加:vb工程——部件——Microsoft Windows Common Controls 6.0(SP3)

设计:添加控件后,右击属性页可以添加多个选项卡


      如上图,在设计时要在客户区放置容器,比如picturebox或frame框。在机房中我添加了frame框,创建了一个控件数组,为每个tab对象创建一个控件,并设置容器的大小来匹配tab控件。

    '初始化5个frame大小以匹配tab控件
For i = 0 To 4
    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
        首先设置frame框的属性为不可见,点击哪个选项卡时对应的frame框设置为可见,用zorder显示到最前面。
  Frame1(TabStrip1.SelectedItem.Index - 1).Visible = True '把被选中的tab对应的frame显示出来
  Frame1(TabStrip1.SelectedItem.Index - 1).ZOrder 0       'zorder方法,运行时放在最前面
        例如,在机房收费系统结账中若选择了第一张选项卡,语句为:
        
      If TabStrip1.SelectedItem.Index = 1 Then           '点击了第一个:购卡
          txtsql = "select * from student_info where UserID ='" & Combo1.Text & "'"         '注册
          Set mrc = ExecuteSQL(txtsql, msgtxt)
              If msgtxt = "查询到0条记录" Then
                 MsgBox "没有记录", vbOKOnly + vbExclamation, "警告"
                 Exit Sub
              End If
           If Not (mrc.BOF And mrc.EOF) Then
              MSFlexGrid1(0).Rows = 1
                  
              MSFlexGrid1(0).CellAlignment = 4
              MSFlexGrid1(0).TextMatrix(0, 0) = "学号"
              MSFlexGrid1(0).TextMatrix(0, 1) = "卡号"
              MSFlexGrid1(0).TextMatrix(0, 2) = "日期"
              MSFlexGrid1(0).TextMatrix(0, 3) = "时间"
                 
            Do While Not mrc.EOF                                   '显示数据
                 With MSFlexGrid1(0)
                 .Rows = .Rows + 1 '这种方式也可防止空白行的出现
                 .CellAlignment = 4
                 .TextMatrix(.Rows - 1, 0) = mrc.Fields(1)
                 .TextMatrix(.Rows - 1, 1) = mrc.Fields(0)
                 .TextMatrix(.Rows - 1, 2) = Format(mrc.Fields(12), "yyyy-mm-dd")
                 .TextMatrix(.Rows - 1, 3) = mrc.Fields(13)
                
                   mrc.MoveNext
                 End With
               Loop
            End If
            mrc.Close
        End If
             a = MSFlexGrid1(0).Rows - 1

           其中,我遇到的问题

       工程运行时,出现的现象:若先点击第一张选项卡,则可以正常显示;若先选第二张或以后的几张选项卡,frame框不出现,之后再点击第一张选项卡,所有的frame框出现。

        问题原因:第一个frame框作为容器,把其他的几个frame框包含在自己里面了,所以只要frame1不可见时,其他的都不能显示。

        注意:用多个frame框时,注意之间的关系。


你可能感兴趣的:(使用tabstrip控件)