什麼是控制元件陣列控制元件陣列的概述
控制元件陣列是一組具有相同名稱和型別的控制元件的集合,通過各自的編號***下標***來識別,並且可以共享事件。那麼你對控制元件陣列瞭解多少呢?以下是由小編整理關於什麼是控制元件陣列的內容,希望大家喜歡!
控制元件陣列的概述
在設計時,有三種辦法建立控制元件陣列:更改控制元件的Index屬性、將已有的控制元件複製到同一窗體中、使多個同類型的控制元件的名稱***Name屬性***相同。
更改Index屬性
選擇一個控制元件,按F4開啟“屬性”面板,找到“Index”屬性,將其更改為一個0和32767之間***包括0和32767***的且未被用於其他控制元件索引值的整數,即可建立一個以原控制元件名稱為名稱的控制元件陣列。
複製已有控制元件
若已有一控制元件名為Command,右擊該控制元件,單擊快捷選單中的“複製”,再右擊控制元件所在窗體***或其中的一個類似Frame的容器控制元件***,單擊快捷選單中的“貼上”,VB會彈出一個對話方塊,顯示“已經有一個控制元件為 'Command'。建立一個控制元件陣列嗎?”單擊“是”按鈕,就可建立一個名稱***Name屬性***為“Command”的控制元件陣列,被複制的控制元件為Command***0***,貼上的控制元件為Command***1***。
使控制元件名相同
若已有一控制元件名為Command,將另一同型別控制元件的Name屬性改為“Command”後,VB也會彈出一個對話方塊,單擊“是”即可建立一控制元件陣列。
執行時增減物件新增物件
在VB中,不能在執行時直接建立一個原先不存在的控制元件陣列,但可以使用Load函式為已存在的控制元件陣列新增同類型的控制元件。
假設已有一個控制元件陣列名為“Command”,陣列中只有一個物件“Command***0***”,在執行時,可以通過下面的程式碼增加一個物件“Command***1***”。
PrivateSubCommand_Click***IndexAsInteger***'控制元件陣列中控制元件的點選事件LoadCommand***1***'新增Command***1***Command***1***.Top=0'將Command***1***移至頂端Command***1***.Visible=True'將Command***1***設定為可見EndSub
說明:
此處的Load函式的語法如下:
Load Object ***Index As Integer***
Load函式引數
引數
描述
Object
必選,物件表示式,要新增控制元件的控制元件陣列名稱。
Index
必選,數值表示式,0~32767的一個整數,被新增的控制元件在控制元件陣列中的索引值***Index屬性***,該值必須未被引用。
執行時在一個控制元件陣列中添加了新的控制元件後,新控制元件除Index、TabIndex和Visible屬性外,其餘屬性與該控制元件陣列中Index屬性最小的控制元件的相應屬性完全相同。而Index屬性在Load函式中指定,TabIndex屬性取VB規定的預設數值***比其他任何控制元件都大***,Visible為False。所以需要改變新控制元件的Left或Top,以及Visible屬性後才能看到它。
這裡的程式碼僅設計用於新增Command***1***,即使Command中的按鈕被點選兩次,也不能新增Command***2***,而是會返回“物件已經載入”的錯誤。為了不斷新增控制元件,可以使用下面的程式碼。
PrivateSubCommand_Click***IndexAsInteger***'控制元件陣列中控制元件的點選事件IfCommand.UBound=32767ThenExitSubLoadCommand***Command.UBound+1***'新增控制元件Command***Command.UBound***.Top=Command.UBound*150'移動新控制元件Command***Command.UBound***.Visible=True'將新控制元件設定為可見EndSub
控制元件陣列的UBound屬性返回該控制元件陣列中控制元件的最大下標***索引值***,新增索引值為Command.UBound+1***不大於32767***的控制元件陣列元素可以保證不發生“物件已經載入”的錯誤。但是,由於控制元件陣列中每個控制元件的索引值並不一定是連續的,即可以只新增Command***1***和Command***3***而不新增Command***2***,所以即使控制元件陣列最大索引值為32767,該控制元件陣列也不一定有32767個物件。