共用方式為


詳述:自訂使用者控制項

更新:2007 年 11 月

在這個課程中,您將學習如何自訂使用者控制項 (User Control),讓它更有用。

加入標籤

在上一個課程中,您測試過 [NamesControl] 使用者控制項,並發現它的運作方式如同預期。不過,您可能也注意到一些可以改善的方面。例如,哪個文字方塊中應該輸入哪個名稱並不明顯,而且無法確定使用者是否都輸入了三個名稱。

為了讓使用者控制項更有用,您可以加入識別每個文字方塊的標籤。您可以將這些標籤的文字設定為:「名字」、「中間名」和「姓氏」,不過如果您稍後決定要改用「中間名縮寫」時,該怎麼辦?最好是為標籤文字建立屬性,以便您可在設計階段變更文字並為每個屬性提供預設值。

試試看!

若要自訂使用者控制項

  1. 開啟您在上一個課程中所建立的 NamesUserControl 專案。如果您並未儲存該專案,就必須先回到上一個課程:測試使用者控制項,並完成該課程中的程序。

  2. 在 [方案總管] 中,選取 [NamesControl.vb],然後在 [檢視] 功能表中選擇 [設計工具]。

  3. 從 [工具箱] 中,將三個 [Label] 控制項拖曳到設計工具中,並在每個 [TextBox] 上都放置一個控制項。

  4. 在 [方案總管] 中,選取 [NamesControl.vb],然後在 [檢視] 功能表中選擇 [程式碼]。

  5. 在 [程式碼編輯器] 中,加入下列程式碼,以便建立標籤文字的屬性。

    Private text1 As String = "First Name"
    Property Label1Text() As String
        Get
            Return text1
        End Get
        Set(ByVal value As String)
            text1 = value
            Label1.Text = text1
        End Set
    End Property
    Private text2 As String = "Middle Name"
    Property Label2Text() As String
        Get
            Return text2
        End Get
        Set(ByVal value As String)
            text2 = value
            Label2.Text = text2
        End Set
    End Property
    Private text3 As String = "Last Name"
    Property Label3Text() As String
        Get
            Return text3
        End Get
        Set(ByVal value As String)
            text3 = value
            Label3.Text = text3
        End Set
    End Property
    

    請注意,此程式碼會為標籤文字宣告三個 Private 變數,而且這些宣告含有要顯示的預設值。

  6. 在 [程式碼編輯器] 中,從左側下拉式方塊中選取 [(NamesControl 事件)],然後從右側下拉式方塊中選取 [Load] 事件。

  7. 將下列程式碼加入至 NamesControl_Load 事件處理常式:

    ' Initialize the three labels
    Me.Label1.Text = Label1Text
    Me.Label2.Text = Label2Text
    Me.Label3.Text = Label3Text
    
  8. 在 [建置] 功能表上,選擇 [建置方案]。

  9. 在 [方案總管] 中,選取 [Form1.vb],然後在 [檢視] 功能表中選取 [設計工具]。

    確定標籤是否具有預設文字。您可以嘗試在 [屬性] 視窗中變更 [Label1Text] 屬性,並確定它是否也在控制項中變更。

  10. 在 [檔案] 功能表上選擇 [關閉],即可關閉表單設計工具。

加入驗證

另一種有用的自訂方式就是加入程式碼,以便「驗證」輸入的項目,並確定輸入的項目是否正確。您可以為整個使用者控制項撰寫驗證程式碼,而不用分別驗證每個 [TextBox] 控制項。

大部分控制項都有焦點從控制項移開時引發的 Validating 事件,而這就是您將輸入驗證程式碼的位置。在此範例中,您將會想要撰寫程式碼,以便確定每個文字方塊都含有名稱。

如果一或多個文字方塊是空白的,您將會想要顯示訊息方塊,提醒使用者輸入名稱。您可以公開 (Expose) 含有預設訊息的屬性。這樣一來,控制項的使用者就可以將訊息變更為他們想要的內容。

此外,控制項的使用者可能不需要中間名,所以您也會想要加入 Boolean 屬性,以便關閉 [MiddleName] 文字方塊的驗證。

試試看!

若要加入驗證

  1. 在 [程式碼編輯器] 中,為兩個屬性加入與驗證相關的程式碼:一個是用來指定是否需要中間名,另一個則是用來指定驗證失敗時要顯示的訊息。

    Private required As Boolean = True
    Property MiddleNameRequired() As Boolean
        Get
            Return required
        End Get
        Set(ByVal value As Boolean)
            required = value
        End Set
    End Property
    Private errormessage As String = "Please enter your name."
    Property ValidationErrorMessage() As String
        Get
            Return errormessage
        End Get
        Set(ByVal value As String)
            errormessage = value
        End Set
    End Property
    
  2. 在 [程式碼編輯器] 中,從左側下拉式方塊中選取 [(NamesControl 事件)],然後從右側下拉式方塊中選取 [Validating] 事件。

  3. 將下列程式碼加入至 NamesControl_Validating 事件處理常式:

    If MiddleNameRequired = True Then
        If FirstName.Text = "" Or MiddleName.Text = "" Or _
    LastName.Text = "" Then
            MsgBox(ValidationErrorMessage)
        End If
    Else
        ' Middle name isn't required.
        If FirstName.Text = "" Or LastName.Text = "" Then
            MsgBox(ValidationErrorMessage)
        End If
    End If
    
  4. 在 [建置] 功能表上,選擇 [建置方案]。

  5. 在 [方案總管] 中,選取 [Form1.vb],然後在 [檢視] 功能表中選取 [設計工具]。

    選取表單上的使用者控制項,並確定這兩個新的屬性是否都顯示在 [屬性] 視窗中。

  6. 從 [工具箱] 將 [Button] 控制項拖曳到表單內。

  7. 請按 F5 執行程式。

    輸入您的名字和姓氏,但不輸入中間名。按一下按鈕,應該就會顯示含有 ValidationErrorMessage 的訊息方塊。

  8. 在 [檔案] 功能表上,選擇 [全部儲存],儲存您的工作。

後續步驟

在這個課程中,您學會如何自訂使用者控制項,讓它更有用。在下一個課程中,您將學習如何使用圖形繪製圖片和文字。

下一個課程:繪製圖片:使用圖形

請參閱

工作

測試使用者控制項

其他資源

可視物件:建立第一個使用者控制項

使用物件設計程式:使用類別

Visual Basic 導覽