在VB.Net中建立使用控制元件陣列 (轉)

worldblog發表於2007-12-15
在VB.Net中建立使用控制元件陣列 (轉)[@more@]

中建立使用陣列:namespace prefix = o ns = "urn:schemas--com::office" />

 

一、  關於“控制元件陣列”

“控制元件陣列”是中一項簡單而實用的技術,透過對控制元件的簡單複製、複製,開發者可以指定一組控制元件,這些控制元件具有相同的型別和名稱,共享事件集。使用控制元件陣列可以:1、允許多個控制元件共享同一個事件控制程式碼;2、提供了執行期間增加一個控制元件的機制;3、提供了一種方便的組合控制元件的方法。

在VB.NET中,控制元件陣列的建立不再透過VB6中設計時對控制元件的簡單複製、複製而實現。.NET 的事件模型允許任何事件處理處理來自多個控制元件的事件,這使我們能夠建立屬於不同型別但共享相同事件的控制元件組。

 

二、  VB.NET中程式設計建立控制元件陣列

下面我們建立一個Button型別控制元件陣列:

1、建立“應用程式”型別的工程,新增名為ButtonArray的類,並使該類繼承 System.Collection.CollectionBase 類。System.Collections.CollectionBase類是.NET類庫中為集合操作提供抽象的基類,透過對它的繼承可以為我們的ButtonArray類具備集合增加、刪除、的功能。

2、為ButtonArray類新增ParentForm屬性,即控制元件組所在窗體,建立初始化(建構函式);

3、為控制元件陣列類增加AddItem方法,該方法在控制元件陣列類中新增成員;

4、為控制元件陣列類增加RemoveItem方法,該方法在控制元件陣列中刪除一個成員。

 

示例程式碼:

Public Class ButtonArray

  Inherits System.Collections.CollectionBase

  Private ReadOnly ParentFoAs System.Windows.Forms.Form

 

  Public Sub New(ByVal pForm As System.Windows.Forms.Form)

  ParentForm = pForm

  End Sub

 

  Default Public ReadOnly Property Item(ByVal index As Integer) As System.Windows.Forms.Button

  Get

  Return Me.List.Item(index)  ' ButtonArray的List 屬性從CollectionBase 繼承

  End Get

  End Property

 

  Public Sub AddItem()

  Dim btnItem As New System.Windows.Forms.Button()

  Me.List.Add(btnItem)

  ParentForm.Controls.Add(btnItem)  '向窗體中增加控制元件

  btnItem.Tag = Me.Count  'Count屬性從CollectionBase 繼承

  btnItem.Top = Me.Count * 30

  btnItem.Left = 200

  btnItem.Text = "Button" & Me.Count.ToString

  AddHandler btnItem.Click, AddressOf btnItem_Click '繫結事件處理程式

  End Sub

 

  Public Sub RemoveItem()

  If Me.Count > 0 Then

  ParentForm.Controls.Remove(Me(Me.Count - 1))

  Me.List.RemoveAt(Me.Count - 1)

  End If

  End Sub

 

  Public Sub btnItem_Click(ByVal sender As , ByVal e As System.EventArgs)

  '在這裡編寫控制元件陣列對點選事件的響應

  '例如:

  MsgBox("點選:" & sender.GetType().ToString & CType(CType(sender, Button).Tag, String))

  End Sub

End Class

 

 

三、  使用建立的控制元件陣列

在Form1中放置兩個按鈕Button1、Button2,分別測試控制元件陣列的增添、刪除。

雙擊Form新增程式碼:

Public Class Form1

  Inherits System.Windows.Forms.Form

 

……Windows窗體設計器生成的程式碼……

  Dim Buttons As New ButtonArray(Me)

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Buttons.AddItem()

  End Sub

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  Buttons.RemoveItem()

  End Sub

End Class

 

可見,與VB6中實現控制元件陣列的方法相比,VB.NET似乎複雜了一些,但同時也使開發人員在程式設計時有了更大的靈活度。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993893/,如需轉載,請註明出處,否則將追究法律責任。

相關文章