可以不同。
創(chuàng)新互聯(lián)建站從2013年開始,先為洛扎等服務建站,洛扎等地企業(yè),進行企業(yè)商務咨詢服務。為洛扎企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
開發(fā)人員在 Visual Basic 6.0 以及更早的版本中使用控件數(shù)組主要有以下三個理由:
1. 在循環(huán)中訪問數(shù)組中控件的屬性。
2. 向窗體動態(tài)添加新控件。
3. 允許一個事件例程與多個控件連接 。
控件數(shù)組的使用,極大的方便了開發(fā)人員。然而,剛剛從Visual Basic6.0(以下簡稱VB6.0)過渡到Visual Basic.Net(以下簡稱VB.NET)的初學者卻發(fā)現(xiàn),在VB.NET中似乎不能使用控件數(shù)組了。筆者仔細查閱了VB.NET的MSDN文檔發(fā)現(xiàn),在 VB.NET 中,確實不再支持控件數(shù)組。原因是,VB.NET對事件模型作了很大的改動,引入了另外一種數(shù)據(jù)類型――控件集合模型,使控件數(shù)組沒有存在的必要。就像 VB6.0 中的控件數(shù)組可以共享事件一樣,VB.NET 中的事件模型允許任何事件處理程序都可以處理來自多個控件的事件,這就允許創(chuàng)建屬于不同類型但共享相同事件的控件組。
要使用ListView控件,需要加入組件:
Microsoft Windows Common Controls 6.0
Windows資源管理器的右半部分,就是一個ListView控件。
作用
列出并列關(guān)系的對象及對象屬性。
ListView控件的對象層次結(jié)構(gòu)
ListView -整個控件
ColumnHeaders -標題行
ColumnHeader -標題列
ListItems -對象行集合
ListItem -對象行
ListSubItems -對象屬性集合
ListSubItem -對象屬性
注意:SubItems和ListSubItems的區(qū)別:SubItems是一個String數(shù)組;ListSubItems是一個集合。
屬性
View:設置ListView的外觀
Sorted:設置ListView中的對象集合是否排序。
SortKey:設置以第幾項排序。從零開始。
SelectedItem:返回選中的對象的引用。
事件
AfterLabelEdit:編輯ListItem對象的標簽時被觸發(fā)。
BeforeLabelEdit:編輯ListItem對象的標簽后出發(fā)。
ColumnClick:單擊列標題時觸發(fā)。參數(shù)中可以獲得被單擊的列對象。通常用于排序。
ItemClick:單擊某行或某ListItem時觸發(fā)。參數(shù)中可以獲得被單擊的ListItem對象。
方法
FindItem:搜索ListItem對象。
參數(shù):
string:搜索字符串。
value:在ListItem的哪部分中搜索(LvwText、LvwSubItem、LvwTag);index:開始搜索的位置。
match:匹配方式。
HitTest:檢索位于特定坐標處的ListItem對象。
ListView控件比前面幾種控件要復雜一些,通過此控件,可將項目組成帶有或不帶有列標頭的列,并顯示伴隨的圖標和文本。ListView控件是由ColumnHeader和ListItem對象所組成的,其中ColumnHeader對象的個數(shù)決定了控件的列數(shù),而ListItem對象的個數(shù)則決定了控件的行數(shù)。(圖7)
ColumnHeader對象是ListView控件中包含標頭文字的項目。利用ColumnHeader對象,用戶可以:
▲單擊對象觸發(fā)ColumnClick事件并根據(jù)數(shù)據(jù)項目將項目排序。
▲拖動對象的右邊框來調(diào)整列寬度。
▲在報表視圖中隱藏ColumnHeader對象。
ColumnHeader對象的數(shù)目決定每個ListItem對象可包含的子項目數(shù)目。刪除ColumnHeader對象后所有與列關(guān)聯(lián)的子項目也將被刪除,并且每個ListItem對象的子項目數(shù)組將平移以更新ColumnHeader的索引,而這將導致剩余的列標頭SubItemIndex屬性的改變。
ColumnHeader對象的SubItemIndex屬性
該屬性返回與ListView控件中ColumnHeader對象關(guān)聯(lián)的子項目的索引。子項目是字符串數(shù)組,代表顯示在報表視圖中的ListItem對象的數(shù)據(jù)。第一列的列標頭SubItemIndex屬性設置為0,這是因為小圖標和ListItem對象的文字總出現(xiàn)在第一列中,而且它們被當作ListItem對象而不是子項目。列標頭數(shù)目取決于子項目數(shù)目。列標頭數(shù)目總是比子項目數(shù)目多1。
在設計時可以利用屬性頁的“列首”選項卡將ColumnHeader對象添加到ListView控件中,在運行時則用Add方法添加。
ColumnHeader對象的Add方法
該方法的使用與前面那些控件基本相似,就不再介紹了。
ListView1.ColumnHeader.Add(index,key,text,width,alignment)
ListItem對象是指控件中的一行(不包含標頭行)的所有內(nèi)容。它也可包含文本和圖片,但是要使用圖片則必須通過Icons和SmallIcons屬性引用ImageList控件。
ListItem對象的SubItems屬性
返回或設置一個字符串(子項目)數(shù)組,它代表ListView控件中ListItem對象的數(shù)據(jù)。
ListItem對象可包含任意多個的關(guān)聯(lián)項目數(shù)據(jù)字符串(子項目),但每個ListItem對象子項目數(shù)目必須相同。每個子項目都對應于相關(guān)的列標頭,無法直接向子項目數(shù)組添加元素,只有通過ColumnHeaders的Add方法添加列標頭的方法來添加子項目。
ListItem對象的Add方法
該方法添加ListItem對象到ListView控件的ListItems集合中并返回對新創(chuàng)建對象的引用。
它的語法如下:
ListItem1.Add(index,key,text,icon,smallIcon)
ListView控件的View屬性
ListView控件可使用四種不同視圖顯示項目,這可以用View屬性來確定。該屬性返回或設置ListView控件中ListItem對象的外觀。
ListView控件的SortOrder,SortKey和Sorted屬性
控件中的ListItem對象可以按要求進行排序,與排序有關(guān)的屬性是SortOrder,Sorted和SortKey屬性。
SortOrder屬性返回或設置一個值,此值決定ListView控件中的ListItem對象以升序或降序排序。
SortKey屬性返回或設置一個值,此值決定ListView控件中的ListItem對象如何排序。
Sorted屬性返回或設置確定ListView控件中的ListItem對象是否排序的值。
下面的代碼說明了如何創(chuàng)建ColumnHeaders和ListItem對象,SubItemIndex和SubItem屬性的使用方法以及如何排序。
Private Sub Form_load()
'確保ListView控件的view屬性為報表視圖。
ListView1.View=lvwReport
'添加三列。
ListView1.ColumnHeaders.Add,"Name","姓名"
ListView1.ColumnHeaders.Add,"Sex","性別"
ListView1.ColumnHeaders.Add,"Age","年齡"
'向控件添加ListItem對象。
Dim itmX As ListItem
'添加column1的名稱。
Set itmX=ListView1.ListItems.Add(1,"ZL","張力")
'使用SubItemIndex將SubItem與正確的ColumnHeader關(guān)聯(lián)。使用關(guān)鍵字("Sex")指定正確的ColumnHeader。
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
'使用ColumnHeader關(guān)鍵字將SubItems字符串與
'正確的ColumnHeader關(guān)聯(lián)。
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19"
Set itmX=ListView1.ListItems.Add(1,"LF","李芳")
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="22"
Set itmX=ListView1.ListItems.Add(1,"WW","王偉")
itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"
itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="24"
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)
Select Case ColumnHeader.Key
Case "Sex":ListView1.SortKey=1
ListView1.SortOrder=lvwAscending
ListView1.Sorted=True
Case "Age":ListView1.SortKey=2
ListView1.SortOrder=lvwAscending
ListView1.Sorted=True
End Select
End Sub
VB中表格控件有很多,如MSFlexGrid,DataGrid,MSHFlexGrid等等
使用的多的是微軟的FlexGrid控件。
通過菜單"Project" - "Components" - 勾上"Microsoft FlexGrid Control 6.0"進行選擇。這個是包含在VS6 SP6安裝包內(nèi)的。