rt,我有一个mdi窗体,想做成这样的效果,左边是工具箱,右边是客户区部分,
可我不知道怎样让这两部分合理的占有整个mdi窗体空间。

解决方案 »

  1.   

    这是分隔条的例子!!Option ExplicitPrivate Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function ReleaseCapture Lib "user32" () As Long'加三个PICTUREBOX控件,将其中一个作为分隔条,改名为:picSplit
    Private Sub Form_Load()
        Picture1.Left = 60
        Picture1.Top = 60
        Picture2.Top = 60
        picSplit.Left = Picture1.Left + Picture1.Width + 30
        picSplit.Width = 60
        picSplit.BorderStyle = 0
        Picture2.Left = picSplit.Left + picSplit.Width '+ 50
        Picture1.Height = 5700
        Picture2.Height = 5700
        picSplit.Top = 60
        picSplit.Height = 5700
        picSplit.MousePointer = vbSizeWE
    End SubPrivate Sub picSplit_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    On Error Resume Next
        If Button = vbLeftButton Then
            SetCapture picSplit.hwnd
            picSplit.Tag = x
            picSplit.BackColor = &HFF8080
        End If
    End SubPrivate Sub picSplit_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    On Error Resume Next
        If Button = vbLeftButton Then
            If picSplit.Left >= (100 - x) And picSplit.Left <= (Me.ScaleWidth - 100 - x) Then picSplit.Left = picSplit.Left + x - CInt(picSplit.Tag)
        End If
    End SubPrivate Sub picSplit_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    On Error Resume Next
        If Button = vbLeftButton Then
            Picture1.Width = picSplit.Left - 80
            Picture2.Left = picSplit.Left + 50
            Picture2.Width = Width - picSplit.Left - 250
            
            picSplit.BackColor = &H8000000F
            ReleaseCapture
        End If
    End Sub
      

  2.   

    你的这个办法我在坛子里看到过,我想实现的效果是工具箱是个窗口,可以关闭,拖动
    后是个独立的小窗口,当拖到左边时就刚好占满mdi窗体的一部分,而右边是子窗体
    大概就像vb一样的效果,可以新建一个窗体,左边有工具箱,很多软件都有这种效果的。