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

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

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

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

要把表單嵌入到另一個表單或控制項,主要操作步驟如下: 宣告表單物件 把表單物件的TopLevel屬性設為False 把表單嵌入另一個表單或控制項
  簡單的程式碼範例如下:
Dim f As New Form f.TopLevel = False f.Parent = Me f.Show()

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

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

程式範例

程式範例如下:

Public Class Form1 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

執行結果:

Form.TopLevel 屬性