共用方式為


逐步解說:建立和實作介面 (Visual Basic)

介面描述屬性、方法和事件的特性,但會將實作詳細數據保留至結構或類別。

本逐步解說示範如何宣告及實作介面。

備註

本逐步解說不提供如何建立使用者介面的相關信息。

備註

您的電腦可能會在下列指示中顯示某些 Visual Studio 使用者介面元素的不同名稱或位置。 您擁有的 Visual Studio 版本,以及您所使用的設定會決定這些元素。 如需詳細資訊,請參閱 個人化 IDE

定義介面

  1. 開啟新的 Visual Basic Windows 應用程式專案。

  2. 單擊 [專案] 功能表上的 [新增模組],將新的模組新增至專案。

  3. 將新模組 Module1.vb 命名為 ,然後按兩下 [ 新增]。 會顯示新模組的程序代碼。

  4. TestInterfaceModule1 語句之間輸入 Interface TestInterface ,然後按 ENTER 鍵,在Module中定義名為 End Module 的介面。 代碼編輯器會將關鍵詞縮排,並新增語句以形成程式碼區塊。

  5. InterfaceEnd Interface 語句之間放置下列程式碼,以定義該介面的屬性、方法和事件:

    Property Prop1() As Integer
    Sub Method1(ByVal X As Integer)
    Event Event1()
    

實施

您可能會注意到,用來宣告介面成員的語法與用來宣告類別成員的語法不同。 這項差異反映了介面不能包含實作程式代碼的事實。

實現介面

  1. 將以下語句新增到 ImplementationClass 中,在 Module1 語句之後但在 End Interface 語句之前,然後按 ENTER 鍵,以新增名為 End Module 的類別:

    Class ImplementationClass
    

    如果您在整合開發環境中工作,程式 代碼編輯器 會在按下 ENTER 時提供相符 End Class 的語句。

  2. 將下列 Implements 語句新增至 ImplementationClass,以命名 類別實作的介面:

    Implements TestInterface
    

    當與類別或結構頂端的其他專案分開列出時, Implements 語句會指出類別或結構會實作介面。

    如果您在集成開發環境中工作,程式 代碼編輯器 會在按下 ENTER 時實作 所需的 TestInterface 類別成員,而且您可以略過下一個步驟。

  3. 如果您未在集成開發環境中運作,則必須實作 介面 MyInterface的所有成員。 將下列程式代碼添加到 ImplementationClass 以實作 Event1Method1Prop1

    Event Event1() Implements TestInterface.Event1
    
    Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1
    End Sub
    
    Public Property Prop1() As Integer Implements TestInterface.Prop1
        Get
        End Get
        Set(ByVal value As Integer)
        End Set
    End Property
    

    這段語句會為要實作的介面和介面成員命名。

  4. 將私用欄位新增至儲存屬性值的類別,以完成 的定義 Prop1

    ' Holds the value of the property.
    Private pval As Integer
    

    傳回屬性 get 存取子pval的值。

    Return pval
    

    在屬性 set 存取子中設定 pval 的值。

    pval = value
    
  5. 完成 Method1 的定義,藉由新增下列程式碼。

    MsgBox("The X parameter for Method1 is " & X)
    RaiseEvent Event1()
    

測試介面的實作

  1. 以滑鼠右鍵點選專案的啟動表單在 方案總管中,然後點選 檢視程式碼。 編輯器會顯示啟動表單的類別。 根據預設,啟動表單稱為 Form1

  2. 將下列 testInstance 欄位新增至 Form1 類別:

    Dim WithEvents testInstance As TestInterface
    

    藉由宣告 testInstanceWithEvents,類別 Form1 可以處理其事件。

  3. 將下列事件處理程式新增至類別Form1中,以處理testInstance引發的事件。

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. 將名為 TestForm1 子程式新增至 類別,以測試實作類別:

    Sub Test()
        '  Create an instance of the class.
        Dim T As New ImplementationClass
        ' Assign the class instance to the interface.
        ' Calls to the interface members are 
        ' executed through the class instance.
        testInstance = T
        ' Set a property.
        testInstance.Prop1 = 9
        ' Read the property.
        MsgBox("Prop1 was set to " & testInstance.Prop1)
        '  Test the method and raise an event.
        testInstance.Method1(5)
    End Sub
    

    Test 程式會建立 類別的實例,這個實例會實 MyInterface作 、將該實例指派給 testInstance 欄位、設定屬性,以及透過介面執行方法。

  5. 新增程式碼,從啟動表單的Test程序調用Form1 Load程序:

    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs) Handles MyBase.Load
        Test() ' Test the class.
    End Sub
    
  6. 按下 F5 來運行Test程序。 訊息「Prop1 已設定為 9」隨即顯示。 按兩下 [確定] 之後,會顯示「Method1 的 X 參數為 5」訊息。 按一下 [確定],即可顯示訊息「事件處理程式已攔截事件」。

另請參閱