在MDI的Parent窗体中,背景很难看,大家都希望能够有一个好看的背景。可是直接使用窗体的IMAGE属性,或者用PICTUREBOX都不行。为什么呢?在Form中,所谓的MDI是一个容器,比较特殊而已--MdiClient。它就是用来保持MDICHILD窗体的。只有通过修改它的属性才可以修改MDI容器显示出来的效果。这个东东在MSDN上基本没有介绍。但是没有介绍就没有办法使用了吗?看下面。
1
''定义一个MDI容器
2
Private WithEvents cli As Windows.Forms.MdiClient
3![]()
4
Private bgImage As Image = Image.FromFile(Common.Startpath & "\xxx.xxx" )
5![]()
6
''查找MdiClient这个窗体对象
7
Private Sub SetMdiClient()
8
Dim i As Int16 = Me.Controls.Count - 1
9
While True
10
Try
11
cli = CType(Me.Controls.Item(i), MdiClient)
12
Exit While
13
Catch ex As ArgumentOutOfRangeException
14
Exit While
15
Catch ex As Exception
16
i -= 1
17
End Try
18
End While
19
End Sub
20![]()
21
''重绘对应背景
22
Private Sub cli_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles cli.Paint
23
e.Graphics.DrawImage(bgImage, 0, 0, cli.Width, cli.Height)
24
End Sub
25![]()
26
''在改变窗体大小的时候,进行背景图片的重新绘制
27
Private Sub cli_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles cli.Resize
28
cli.Refresh()
29
End Sub
30![]()
31![]()
''定义一个MDI容器2
Private WithEvents cli As Windows.Forms.MdiClient3

4
Private bgImage As Image = Image.FromFile(Common.Startpath & "\xxx.xxx" )5

6
''查找MdiClient这个窗体对象7
Private Sub SetMdiClient()8
Dim i As Int16 = Me.Controls.Count - 19
While True10
Try11
cli = CType(Me.Controls.Item(i), MdiClient)12
Exit While13
Catch ex As ArgumentOutOfRangeException14
Exit While15
Catch ex As Exception16
i -= 117
End Try18
End While19
End Sub20

21
''重绘对应背景22
Private Sub cli_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles cli.Paint23
e.Graphics.DrawImage(bgImage, 0, 0, cli.Width, cli.Height)24
End Sub25

26
''在改变窗体大小的时候,进行背景图片的重新绘制27
Private Sub cli_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles cli.Resize28
cli.Refresh()29
End Sub30

31

把上面代码拷贝到你的窗体里面,替换那个XXX.XXX文件名,看看是不是达到你要的效果了?不过唯一遗憾的就是重绘的时候屏幕会闪烁。

浙公网安备 33010602011771号