介面描述屬性、方法和事件的特性,但會將實作詳細數據保留至結構或類別。
本逐步解說示範如何宣告及實作介面。
備註
本逐步解說不提供如何建立使用者介面的相關信息。
備註
您的電腦可能會在下列指示中顯示某些 Visual Studio 使用者介面元素的不同名稱或位置。 您擁有的 Visual Studio 版本,以及您所使用的設定會決定這些元素。 如需詳細資訊,請參閱 個人化 IDE。
定義介面
開啟新的 Visual Basic Windows 應用程式專案。
單擊 [專案] 功能表上的 [新增模組],將新的模組新增至專案。
將新模組
Module1.vb命名為 ,然後按兩下 [ 新增]。 會顯示新模組的程序代碼。在
TestInterface和Module1語句之間輸入Interface TestInterface,然後按 ENTER 鍵,在Module中定義名為End Module的介面。 代碼編輯器會將關鍵詞縮排,並新增語句以形成程式碼區塊。在
Interface和End Interface語句之間放置下列程式碼,以定義該介面的屬性、方法和事件:Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
實施
您可能會注意到,用來宣告介面成員的語法與用來宣告類別成員的語法不同。 這項差異反映了介面不能包含實作程式代碼的事實。
實現介面
將以下語句新增到
ImplementationClass中,在Module1語句之後但在End Interface語句之前,然後按 ENTER 鍵,以新增名為End Module的類別:Class ImplementationClass如果您在整合開發環境中工作,程式 代碼編輯器 會在按下 ENTER 時提供相符
End Class的語句。將下列
Implements語句新增至ImplementationClass,以命名 類別實作的介面:Implements TestInterface當與類別或結構頂端的其他專案分開列出時,
Implements語句會指出類別或結構會實作介面。如果您在集成開發環境中工作,程式 代碼編輯器 會在按下 ENTER 時實作 所需的
TestInterface類別成員,而且您可以略過下一個步驟。如果您未在集成開發環境中運作,則必須實作 介面
MyInterface的所有成員。 將下列程式代碼添加到ImplementationClass以實作Event1、Method1和Prop1: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這段語句會為要實作的介面和介面成員命名。
將私用欄位新增至儲存屬性值的類別,以完成 的定義
Prop1:' Holds the value of the property. Private pval As Integer傳回屬性 get 存取子
pval的值。Return pval在屬性 set 存取子中設定
pval的值。pval = value完成
Method1的定義,藉由新增下列程式碼。MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1()
測試介面的實作
以滑鼠右鍵點選專案的啟動表單在 方案總管中,然後點選 檢視程式碼。 編輯器會顯示啟動表單的類別。 根據預設,啟動表單稱為
Form1。將下列
testInstance欄位新增至Form1類別:Dim WithEvents testInstance As TestInterface藉由宣告
testInstance為WithEvents,類別Form1可以處理其事件。將下列事件處理程式新增至類別
Form1中,以處理testInstance引發的事件。Sub EventHandler() Handles testInstance.Event1 MsgBox("The event handler caught the event.") End Sub將名為
Test的Form1子程式新增至 類別,以測試實作類別: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欄位、設定屬性,以及透過介面執行方法。新增程式碼,從啟動表單的
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按下 F5 來運行
Test程序。 訊息「Prop1 已設定為 9」隨即顯示。 按兩下 [確定] 之後,會顯示「Method1 的 X 參數為 5」訊息。 按一下 [確定],即可顯示訊息「事件處理程式已攔截事件」。