就是可以将一个窗体分成两部分,然后可以拖动以调节两部分之间的大小。
就是像CSDN的导航栏一样。

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3563/3563553.xml?temp=.4002954
      

  2.   

    有ei..上次偶还写了一个出过问题,豆子当时还给我改了一下:D给个信箱,偶发给你
      

  3.   

    activebar控件可以实现你要的效果
      

  4.   

    用分割条控件吧  SpltrBar.ocx 分割条控件可以在窗体上随意创建分割条
      

  5.   

    http://www.china-askpro.com/msg1/qa86.shtmlVB本身没有带Splitter控件,但并不难实现,你可以下载split2.zip(http://www.china-askpro.com/download/split2.zip),这个例子展示了如何在VB中实现Splitter控件。你还可以从Visual Basic Accelerator (http://vbAccelerator.com/)的Code部分下载Splitter控制(有两个)。另外,您可以参考QA000081 "如何实现像VB 5.0一样的编程环境"(http://www.china-askpro.com/msg1/qa81.shtml)。
      

  6.   

    转发
    Option Explicit'variable to hold the width of the spltter bar
    Private Const SPLT_WDTH As Integer = 3'variable to hold the last-sized postion
    Private currSplitPosX As Long'variable to hold the horizontal and vertical offsets of the 2 controls
    Dim CTRL_OFFSET As Integer'variable to hold the Splitter bar colour
    Dim SPLT_COLOUR As Long
    Private Sub Form_Load()
    'set the startup variablesCTRL_OFFSET = 5
    SPLT_COLOUR = &H808080'set the current splitter bar position to an arbitrary value that will always be outside
    'the possibe range. This allows us to check for movement of the spltter bar in subsequent
    'mousexxx subs.currSplitPosX = &H7FFFFFFFListLeft.AddItem "Left list Item 1"
    ListLeft.AddItem "Left list Item 2"
    ListLeft.AddItem "Left list Item 3"
    ListLeft.AddItem "Left list Item 4"
    ListLeft.AddItem "Left list Item 5"'note: VB3 users will need to substitute Chr$(13) & chr$(10) for the VB4 constant vbCrLf in the sentence below.TextRight = "This code demonstrates how to implement a spliiter bar in a Visual Basic Project." & vbCrLf & vbCrLf & "It's actions are controlled through the MouseDown, MouseMove and MouseUp subs of the Splitter Picturebox, and the Resize event of the form."End Sub
    Private Sub Form_Resize()Dim x1 As Integer
    Dim x2 As Integer
    Dim height1 As Integer
    Dim width1 As Integer
    Dim width2 As IntegerOn Error Resume Next'set the height of the controlsheight1 = ScaleHeight - (CTRL_OFFSET * 2)
    x1 = CTRL_OFFSET
    width1 = ListLeft.Widthx2 = x1 + ListLeft.Width + SPLT_WDTH - 1
    width2 = ScaleWidth - x2 - CTRL_OFFSET'move the left list
    ListLeft.Move x1% - 1, CTRL_OFFSET, width1, height1'move the right list
    TextRight.Move x2, CTRL_OFFSET, width2 + 1, height1'move the splitter bar
    Splitter.Move x1 + ListLeft.Width - 1, CTRL_OFFSET, SPLT_WDTH, height1End SubPrivate Sub Splitter_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = vbLeftButton Then
        'change the splitter colour
        Splitter.BackColor = SPLT_COLOUR
        
        'set the current position to x
        currSplitPosX = CLng(X)
    Else
        'not the left button, so... if the current position <> default, cause a mouseup
        If currSplitPosX <> &H7FFFFFFF Then Splitter_MouseUp Button, Shift, X, Y
        
        'set the current position to the default value
        currSplitPosX = &H7FFFFFFF
    End IfEnd Sub
    Private Sub Splitter_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    'if the splitter has been moved...
    If currSplitPosX& <> &H7FFFFFFF Then'if the current position <> default, reposition the splitter and set this as the current value
    If CLng(X) <> currSplitPosX Then
    Splitter.Move Splitter.Left + X, CTRL_OFFSET, SPLT_WDTH, ScaleHeight - (CTRL_OFFSET * 2)
    currSplitPosX = CLng(X)End IfEnd IfEnd Sub
    Private Sub Splitter_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)'if the splitter has been moved...
    If currSplitPosX <> &H7FFFFFFF Then
    'if the current postition <> the last position do a final move of the splitter
    If CLng(X) <> currSplitPosX Then
        Splitter.Move Splitter.Left + X, CTRL_OFFSET, SPLT_WDTH, ScaleHeight - (CTRL_OFFSET * 2)
    End If'call this the default position
    currSplitPosX = &H7FFFFFFF'restore the normal splitter colour
    Splitter.BackColor = &H8000000F'and check for valid sizings.
    'Either enforce the default minimum & maximum widths for the left list, or, if within range, set the widthIf Splitter.Left > 60 And Splitter.Left < (ScaleWidth - 60) ThenListLeft.Width = Splitter.Left - ListLeft.Left 'the pane is within range
    ElseIf Splitter.Left < 60 Then 'the pane is too small
        ListLeft.Width = 60
    Else
        ListLeft.Width = ScaleWidth - 60 'the pane is too wide
    End If
        'reposition both lists, and the splitter bar
        Form_Resize
    End IfEnd Sub