想在MDI窗体里面制作一个侧边栏,仿照网上例子用了一个子窗体实现Private Sub MDIForm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If X < 10 Then
       load Form侧边栏
       ……
Else
       ……
End If
End Sub做好了侧边栏而且也运行成功,但现在问题是,我想在mdi窗体里面再放一个子窗体--Form背景,Form背景一直显示于最底层且充满整个区域,Form背景里有一个IMAGE控件,里面存放图片且stretch = true,程序运行时控制IMAGE控件使得它与Form背景一样大,这样图片就可以不受分辨率影响一直全部显示。关键现在同时载入Form背景,Form侧边栏:要么能运行Form侧边栏,但是Form背景不能最大化
要么Form背景最大化显示,但是怎么都不出现Form侧边栏哪位大侠能帮帮小弟~~~感激不尽~~~~

解决方案 »

  1.   

    侧边栏不要用窗体实现,参考 http://topic.csdn.net/u/20071017/15/d5967ce7-f2e1-4cd5-8fc4-2b1e1f3070f1.html
      

  2.   

    谢谢楼上大哥,可是用在MDI窗体里面方PictureBox实现的话,那个底层的子窗体 Form背景 怎么处理,它会随着PictureBox大小边而改变的啊
      

  3.   

    那么你就用 MDIForm1.ScaleWidth + MDIForm1.Picture1.Width 作为图片宽度。
      

  4.   

    子窗体设计 ControlBox = False,最大化
    Option Explicit
    Private m_BackPicture As IPictureDispPrivate Sub Form_Load()
        Set m_BackPicture = LoadPicture("...")
    End SubPrivate Sub Form_Paint()
        With MDIForm1
            Me.PaintPicture m_BackPicture, -.Picture1.Width, 0, .ScaleWidth + .Picture1.Width, .ScaleHeight
        End With
    End SubPrivate Sub Form_Resize()
        Form_Paint
    End Sub
      

  5.   

    我想可能你没明白我的问题,我的意思是MDI窗体里如果一直充满着一个背景窗体,那么侧边栏就会一直被覆盖在下面,所以我打算把背景窗体去掉。用你说的PaintPicture可以画图,我试过了。但是我想问用没用方法可以直接在MDI窗体里面画图
      

  6.   

    是你没明白上面的程序,就是实现你的目的的:
    背景窗体无标题、最大化,它就会充满整个 MDI 的子窗体客户区;
    PictureBox 在 MDIForm 上, align = left,是不会被子窗体覆盖的(你用 Spy++ 看看就知道它的窗口和 MDIClient 窗口是平级的);
    注意一下背景图的画法:Me.PaintPicture 图是画在背景窗体上的,而 With MDIForm1 图片大小参考的是主窗体的大小,目的是无论侧边栏宽度如何变化,虽然背景窗体大小随之变化,却可以然图片看起来就像被侧边栏覆盖一样不产生缩放。