在vb.net中,用戶可以傳遞一個對象到過程中。下面的例子建立了一個窗體類的對象並且把它傳遞到一個過程中去。為了使用這個例子,用戶可以把一個名為button1的按鈕添加到窗體中去,並把下面這些代碼復制到button1_click事件中去。
Protected Sub Button1_click(Byval sender As system.Objec,_ Byval e AS System.EventArgs) Dim frmform AS New Form1() frmform.show() CenterForm(frmform) End Sub Sub CenterForm(Byval TheForm AS Form) 'Centers the form on the screen. Dim recForm AS rectangle=Screen.GetBounds(TheForm) Theform.Left=CInt((RecForm.Width-Theform.Width)/2) Theform.Top=CInt((RecForm.Height-Theform.Height)/2) End Sub
用戶可以通過先引用一個對象作為一個參數,然後,在過程中,把這個參數聲明為一個新的對象。下面的例子就是把一個對象引用到其他的一個窗體的一個過程中去,步驟如下:
(1)建立一個工程,並確認裡面有一個窗體名為form1;
(2)在工程中加入另一個窗體名為form2;
(3)在這兩個窗體中分別加入一個picturebox控件;
(4)把在窗體form1中的picturebox命名為picturebox1;
(5)把在窗體form2中的picturebox命名為picturebox2;
(6)通過在picturebox2的屬性窗口中點擊"image"屬性,給該屬性賦一個圖片,基本上所有的小圖片都可以賦值給"image"屬性,可以在Windows目錄下找到.bmp文件。
(7)把下面的代碼加入到form1的form1_click事件中去:
Protected Sub Form1_click(Byval sender As System.Object,_ Byval e AS System.EventArgs) Dim frmform2 As New Form2() frmform2.GetPicture(Picturebox1) End Sub (8)把下列代碼加入到form2中去: Public Sub GetPicture(Byval x AS PictureBox) 'Assign the passed-in picturebox to an object variable. objX=x 'Assign the value of the Picture property to Form1 picturebox objX.Image=picturebox2.imgae End Sub
運行程序後,點擊form1,則form2的圖標將會出現在窗體form1上。form1_click過程事件調用了form2窗體的GetPicture過程,而且傳遞了一個空的picturebox對象。而後,在form2窗體的GetPicture過程中,把在form2窗體的picturebox的"image"屬性值傳到這個空的piturebox對象中,那麼在form2窗體的圖象就出現在form1窗體中的picturebox對象中了。
通常情況下,這些對象變量(也就是被聲明為對象的變量)能夠充當很多類的對象。類似地,由Visual Basic內部的各種窗體和控件聲明的對象變量將包含各類裡面的窗體和控件。
當用戶再使用這些類型的對象變量的時候,必須根據不同的對象采取特定的方法,例如,有一些對象也許不支持一種特定的屬性或方法。Visual Basic提供了兩種方法可以查到對象變量屬於哪個類:關鍵字TypeOf和函數TypeName。
關鍵字TypeOf只能用在If...Then...Else表述中,用戶必須直接在代碼中包含這個類的名稱。例如:
If TypeOf MyControl Is CheckBox Then
函數TypeName則更加靈活一點,用戶可以在代碼的任何一個地方使用它,並且由於它以字符的形式返回類的名稱,用戶可以通過字符之間的比較得到它屬於哪個類。