[VB.NET]把.NET視窗嵌入.NET視窗或控制項

[VB.NET]把.NET視窗嵌入.NET視窗

前好一陣子看到同事在做抽換表單時,利用到了把視窗嵌入視窗或控制項的功能。這邊隨手記錄一下。

 

要把視窗嵌入視窗,在表單的宣告上跟平常並無差異,只是多加了把TopLevel屬性設為False,則此表單即可嵌到另一個表單或控制項中。

 

TopLevel屬性主要是用來指出是否要將表單顯示為最上層視窗。最上層表單是沒有父表單的視窗,或它的父表單為桌面視窗。最上層視窗通常在應用程式中當做主表單使用。

 

若未加入把TopLevel屬性設為False,則在表單嵌入時上會發生ArgumentException was unhandled的例外。image

 

要把表單嵌入到另一個表單或控制項,主要操作步驟如下:

  1. 宣告表單物件
  2. 把表單物件的TopLevel屬性設為False
  3. 把表單嵌入另一個表單或控制項

image

 

簡單的程式碼範例如下:


        f.TopLevel = False
        f.Parent = Me
        f.Show()

 

嵌入的表單在使用上仍可以拖曳、縮小、放大、與關閉,操作就跟一般的視窗一樣,不同的只是它的活動範圍被限制在另一個視窗或控制項內。

若要用此方法來做抽換表單,可把視窗的FormBorderStyle設為None,並把它嵌到欲放置的控制項。

 

程式範例

程式範例如下:


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim f As New Form
        f.TopLevel = False
        f.Parent = Me
        f.Show()
    End Sub
End Class

 

執行結果:

image image

 imageimage

 

Link