在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
''重繪對應(yīng)背景
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
''重繪對應(yīng)背景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文件名,看看是不是達到你要的效果了?不過唯一遺憾的就是重繪的時候屏幕會閃爍。

浙公網(wǎng)安備 33010602011771號