ListView控制項

ListView 控制項可使用四種不同視圖顯示項目。通過此控制項,可將項目組成帶有或不帶有列標頭的列,並顯示伴隨的圖示和文本。 可使用 ListView 控制項將稱作 ListItem 對象的列表條目組織成下列四種不同的視圖之一:1.大(標準)圖示2.小圖示3.列表4.報表 View 屬性決定在列表中控制項使用何種視圖顯示項目。還可用 LabelWrap 屬性控制列表中與項目關聯的標籤是否可換行顯示。另外,還可管理列表中項目的排序方法和選定項目的外觀。

基本介紹

  • 中文名:ListView控制項
  • 包括:包括ListItem和ColumnHeader對象
  • 屬性:Appearance屬性
  • 屬性:BackColor屬性
內容特性,屬性,A~G,H~N,O~U,V~Z,解決思路,Drag方法,FindItem方法,GetFirst,HitTest方法,Move方式,OLEDrag,Refresh方法,SetFocus方法,這是什麼,StartLabel,常用辦法,ZOrder方法,ListItems.,ListItems,事件,A~G,H~N,O~U,V~Z,示例,對象集合,

內容特性

ListView控制項包括ListItem和ColumnHeader對象。ListItem對象定義ListView控制項中項目的各種特性,諸如項目的簡要描述、由ImageList控制項提供的與項目一起出現的圖示和附加的文本片段(稱作子項目,它們與顯示在報表視圖中的ListItem對象關聯)。

屬性

下面按字母順序列出了ListView控制項的所有屬性,可以按Ctrl+F查找。

A~G

AllowColumnReorder屬性:返回或設定一個值,決定用戶是否可以用滑鼠對列進行重新排列。
語法:Object.AllowColumnReorder [ = Boolean]
Appearance屬性:返回或設定對象的繪圖風格,在運行時是唯讀的。
語法:Object.Appearance
Appearance屬性設定值

描述
0
平面,控制項沒有可視化效果。
1
預設值)帶有三維效果的控制項。
Arrange屬性:返回或設定一個值,此值決定如何排列ListView控制項中的圖示或小圖示視圖。
語法:Object.Arrange [ = Value]
Arrange屬性中Value設定值
常數

描述
lvwNone
0
(預設)無。
lvwAutoLeft
1
左對齊。項目自動沿控制項左側對齊。
lvwAutoTop
2
頂對齊。項目自動沿控制項頂端對齊。
BackColor屬性:返回或設定對象的背景顏色。
語法:Object.BackColor [ = Color]
BorderStyle屬性:返回或設定對象的框線樣式。0表示無框線,1表示有框線。
語法:Object.BorderStyle [ = Value]
CheckBoxes屬性:返回或設定一個值,確定是否顯示複選框
語法:Object.Checkboxes [ = Boolean]
ColumnHeaderIcons屬性:返回或者設定Imagelist控制項,該控制項為ColumnHeaders集合提供圖示。
語法:Object.ColumnHeaderIcons [ = ImageList]
ColumnHeaders屬性:返回ColumnHeader對象集合的引用。
語法:Object.ColumnHeaders
Container屬性:返回或設定Form上控制項的容器。在設計時不能使用。
語法:Set Object.Container [ = Container]
DragIcon屬性:返回或設定圖示,它將在拖放操作中作為指針顯示。
語法:Object.DragIcon [ = Icon]
DragMode屬性:返回或設定一個值,確定在拖放操作中所用的是手動還是自動拖動方式。
語法:Object.DragMode [ = Number]
DragMode屬性中Number設定值
常數

描述
vbManual
0
(預設值)手動方式,需要在源控制項中用Drag方法來啟動拖放操作。
vbAutomatic
1
自動方式,單擊源控制項自動啟動拖放操作。只有在OLE容器控制項沒有焦點時,它才能自動地被拖動。
DropHighlight屬性:返回或設定對Node或ListItem對象的引用,在游標移動到該對象上時,它就被突出顯示為系統的突出顏色。
語法:Object.DropHighlight [ = Node / ListItem]
Enabled屬性:返回或設定一個值,用來決定窗體或控制項是否能夠對用戶產生的事件作出反應。
語法:Object.Enabled [ = Boolean]
FlatScrollBar屬性:返回或設定一個值,確定對象中滾動條的外觀。
語法:Object.FlatScrollBar [ = Boolean]
Font屬性:返回一個Font對象。
語法:Object.Font
ForeColor屬性:返回或設定在對象里顯示圖片和文本的前景顏色。
語法:Object.ForeColor [ = Color]
FullRowSelect屬性:返回或設定一個值,決定是否選擇整行。
語法:Object.FullRowSelect [ = Boolean]
GridLines屬性:返回或設定一個值,決定在報表視圖中ListView控制項是否顯示格線線
語法:Object.GridLines [ = Boolean]

H~N

Height屬性:返回或設定對象的高度。
語法:Object.Height [ = Number]
HelpContextID屬性:為一個對象返回或設定一個相關聯上下文的編號。它被用來為應用程式提供上下文有關的幫助。
語法:Object.HelpContextID [ = Number]
HideColumnHeaders屬性:返回或設定是否在報表視圖中隱藏ListView控制項的ColumnHeader對象。
語法:Object.HideColumnHeaders [ = Boolean]
HideSelection屬性:返回一個值,以決定當控制項失去焦點時選擇文本是否加亮顯示。
語法:Object.HideSelection
HotTracking屬性:該屬性的返回值確定是否使用靈敏的滑鼠高亮度顯示功能。
語法:Object.HotTracking
HoverSelection屬性:返回或設定一個值,確定當滑鼠指針在ListItem對象上停留時,對象是否被選中。
語法:Object.HoverSelection [ = Boolean]
hWnd屬性:返回窗體或控制項的句柄。
語法:Object.hWnd
Icons屬性:返回或設定與ListView控制項中圖示視圖關聯的ImageList控制項。
語法:Object.Icons [ = Imagelist]
Index屬性:返回控制項在控制項數組中的標識號。
語法:Object.Index
LabelEdit屬性:返回或設定一個值,決定是否可以編輯在控制項中的ListItem對象的標籤。
語法:Object.LabelEdit [ = Integer]
LabelEdit屬性中Integer設定值
常數描述
lvwAutomatic
0
(預設)自動的。BeforeLabelEdit事件發生在單擊選中的節點的標籤時。
lvwManual
1
手動的。BeforeLabelEdit事件只發生在調用StartLabelEdit方法時。
LabelWrap屬性:返回或設定一個值,此值決定當ListView控制項為圖示視圖時標籤是否可換行。
語法:Object.LabelWrap [ = Boolean]
Left屬性:返回或設定對象內部的左邊與它的容器的左邊之間的距離。
語法:Object.Left [ = Value]
ListItems屬性:返回控制項中ListItem對象集合的引用。
語法:Object.ListItems
MouseIcon屬性:返回或設定自定義的滑鼠圖示。
語法:Object.MouseIcon = LoadPicture(Pathname)或Object.MouseIcon [ = Picture]
MousePointer屬性:返回或設定一個值,該值指示在運行時當滑鼠移動到對象的一個特定部分時,被顯示的滑鼠指針的類型。
語法:Object.MousePointer [ = Value]
MultiSelect屬性:返回或設定用戶是否可以在控制項中做多重選擇。
語法:Object.MultiSelect [ = Boolean]
Name屬性:返回用於標識控制項的名字,在運行時是唯讀的。
語法:

O~U

Object屬性:返回對象與對象的方法或屬性的設定。
語法:Object.Object [.Property | .Method]
OLEDragMode屬性:返回或設定是由部件還是由程式設計師來處理OLE拖放操作。
語法:Object.OLEDragMode [ = Mode]
OLEDragMode屬性中Mode設定值
常數

描述
vbOLEDragManual
0
(預設)人工。程式設計師處理所有的OLE拖放操作。
vbOLEDragAutomatic
1
自動。部件處理所有的OLE拖放操作。
OLEDropMode屬性:返回或設定目標部件如何處理放操作。
語法:Object.OLEDropMode [ = Mode]
OLEDropMode屬性中Mode設定值
常數

描述
vbOLEDropNone
0
無。目標部件不接受OLE放操作,並且顯示No Drop圖示。
vbOLEDropManual
1
人工。目標部件觸發OLE放事件,允許程式設計師用代碼處理OLE放操作。
vbOLEDropAutomatic
2
自動。如果DataObject對象包含目標部件能識別的格式的數據,則自動接受OLE拖放操作。當OLEDropMode設為vbOLEDropAutomatic時,在目標上滑鼠事件和OLE拖放事件都不會發生。
Parent屬性:返回包含控制項、或其它對象或者集合的窗體、對象、或集合。
語法:Object.Parent
Picture屬性:返回或設定控制項中要顯示的圖片。
語法:Object.Picture [ = Picture]
PictureAlignment屬性:返回或設定一個值,確定對象中圖片的對齊方式
語法:Object.PictureAlignment [ = Integer]
PictureAlignment屬性中Integer設定值
常數

描述
lvwTopLeft
0
左頂部對齊。
lvwTopRight
1
右頂部對齊。
lvwBottomLeft
2
左底部對齊。
lvwBottomRight
3
右底部對齊。
lvwCenter
4
居中。
lvwTile
5
(預設)平鋪。
SelectedItem屬性:返回對所選ListItem的引用。
語法:Object.SelectedItem
SmallIcons屬性:返回或設定與ListView控制項中小圖示視圖關聯的ImageList控制項。
語法:Object.SmallIcons[ = Imagelist]
Sorted屬性:返回或設定集合中的項目是否排序。
語法:Object.Sorted [ = Boolean]
SortKey屬性:返回或設定一個值,決定控制項中的ListItem對象如何排序。
語法:Object.SortKey [ = Integer]
SortKey屬性中Integer設定值
設定值
描述
0
使用ListItem對象的Text屬性排序。
≥1
使用子項目排序。
SortOrder屬性:返回或設定一個值,此值決定控制項中的ListItem對象以升序或降序排列。
語法:Object.SortOrder [ = Integer]
SortOrder屬性中Integer設定值
常數

描述
lvwAscending
0
(預設)升序。從字母表首部(A~Z)或最早的日期開始排序。數字以字元串的形式排序,第一個數位決定排序的起始位置,其後的數位決定子排序。
lvwDescending
1
降序。從字母表尾部(Z~A)或最晚的日期開始排序。同上。
TabIndex屬性:返回或設定父窗體中控制項的Tab鍵次序。
語法:Object.TabIndex [ = Index]
TabStop屬性:返回或設定一個值,決定是否能夠使用Tab鍵來將焦點移至該控制項。
語法:Object.TabStop [ = Boolean]
Tag屬性:返回或設定一個表達式用來存儲程式中需要的額外數據。
語法:Object.Tag [ = Expression]
TextBackground屬性:返回或設定ListItem對象的背景是透明的還是不透明的。
語法:Object.TextBackground [ = Integer]
ToolTipText屬性:返回或設定一個工具提示。
語法:Object.ToolTipText [ = String]
Top屬性:返回或設定對象的內頂部和它的容器的頂邊之間的距離。
語法:Object.Top [ = Value]

V~Z

View屬性:返回或設定控制項中ListItem對象的外觀。
語法:Object.View [ = Value]
View屬性中Value設定值
常數

描述
lvwIcon
0
(預設)圖示。每個ListItem對象由標準的圖示和文本標籤代表。
lvwSmallIcon
1
小圖示。每個ListItem對象由小圖示及其右側的文本標籤代表。項目水平排列。
lvwList
2
列表。每個ListItem對象由小圖示及其右側的文本標籤代表。ListItem對象及其相關的信息在列中垂直排列。
lvwReport
3
報表。每個ListItem對象顯示為小圖示和文本標籤。可在子項目中提供關於每個ListItem對象的附加信息。圖示、文本標籤和信息顯示在列中,其中最左側一列包含小圖示和文本標籤。附加列顯示每個項目的子項目的文本。
Width屬性:返回或設定對象的寬度。
語法:Object.Width [ = Number]

解決思路

Drag方法

用於控制項的開始、結束或取消拖動操作。不支持命名參數。
語法:Object.Drag Action
Drag方法中Action設定值
常數

描述
vbCancel
0
取消拖動操作。
vbBeginDrag
1
開始拖動Object。
vbEndDrag
2
取消拖動Object。

FindItem方法

查找並返回 ListView 控制項中 ListItem 對象的引用。
語法:Object.FindItem (String, Value, Index, Match)
FindItem方法參數
部分
描述
Object
必需的。對象表達式,其值是ListView控制項。
String
必需的。指定欲查找的ListItem對象的字元串表達式。
可選的。整數或常數,它指定字元串是否與ListItem對象的Text、Subitems及Tag屬性相匹配,如Value設定值中所描述。
Index
可選的。唯一標識對象集合成員並指定搜尋起始位置的整數或字元串。若為整數,其值為Index屬性值;若為字元串,其值為Key屬性值。未指定索引時預設索引為1。
Match
可選的。指定項目的Text屬性與字元串怎樣匹配的整數或常數,如Match設定值中所描述。
FindItem方法中Value設定值
常數

描述
lvwText
0
(預設)將字元串與ListItem對象的Text屬性相匹配。
lvwSubitem
1
將字元串與ListItem對象的SubItems屬性相匹配。
lvwTag
2
將字元串與ListItem對象的Tag屬性相匹配。
FindItem方法中Match設定值
常數

描述
lvwWholeWord
0
(預設)一個整數或常數,它指定若項目的Text屬性由所搜尋的整字開始時匹配成功。搜尋條件非文本時忽略此設定。
lvwPartial
1
個整數或常數,它指定若項目的Text屬性由所搜尋的字元串開始時匹配成功。搜尋條件非字元串時忽略此設定。

GetFirst

返回控制項內部區域中第一個可視對象的引用。
語法:Object.GetFirstVisible()

HitTest方法

返回對位於x和y坐標的ListItem對象或Node對象的引用。通常與拖放操作一起使用,來確定放下的目標項在當前位置是否可用。
語法:Object.HitTest (x As Single, y As Single)

Move方式

用以移動控制項。不支持命名參數。
語法:Object.Move Left, Top, Width, Height

OLEDrag

引起部件初始化OLE拖放操作。
語法:Object.OLEDrag

Refresh方法

強制全部重繪一個窗體或控制項。
語法:Object.Refresh

SetFocus方法

將焦點移至指定的控制項或窗體。
語法:Object.SetFocus

這是什麼

提供“這是什麼”彈出式視窗使用的幫助檔案中選定的一個主題。
語法:Object.ShowWhatsThis

StartLabel

允許用戶編輯標籤。
語法:Object.StartLabelEdit

常用辦法

ZOrder方法

將控制項放置在其圖層的上下順序的前端或後端。不支持命名參數。
語法:Object.ZOrder Position

ListItems.

添加ListItem對象到ListView控制項的ListItems集合中並返回新創建對象的引用。
語法:Object.Add(Index, Key, Text, Icon, SmallIcon)
Add方法參數
部分
描述
Object
必需的。對象表達式,其值是ListItems集合。
Index
可選的。指定在何處插入ListItem的整數。若未指定索引,則將ListItem添加到ListItems集合的末尾。
Key
可選的。唯一的字元串表達式,用來訪問集合成員。
Text
可選的。與ListItem對象控制項關聯的字元串。
Icon
可選的。當ListView控制項設為圖示視圖時,此整數設定從ImageList控制項中選定的欲顯示的圖示。
SmallIcon
可選的。當ListView控制項設為小圖示時,此整數設定從ImageList控制項中選定的欲顯示的圖示。

ListItems

刪除集合中的全部對象。
語法:Object.Clear

事件

A~G

AfterLabelEdit事件:在編輯當前被選中的ListItem對象的標籤之後該事件發生。
語法:Private Sub Object_AfterLabelEdit(Cancel As Integer, Cewstring As String)
AfterLabelEdit事件參數
部分
描述
Object
對象表達式,其值是一個控制項。
Cancel
整數,它確定標籤編輯操作是否被取消。任何非零整數取消該操作。也可以接受布爾值
NewString
用戶輸入的字元串或Null,該值為Null時表示用戶取消了該操作。
BeforeLabelEdit事件:當試圖編輯當前被選中的ListItem對象的標籤時該事件發生。
語法:Private Sub Object_BeforeLabelEdit(Cancel As Integer)
Click事件:在控制項上按下然後釋放一個滑鼠按鈕時發生。
語法:Private Sub Object_Click [(Index As Integer)]
ColumnClick事件:單擊控制項中的ColumnHeader對象時,該事件發生。僅當控制項的View屬性為報表視圖時可用。
語法:Private Sub Object_ColumnClick(ByVal ColumnHeader As ColumnHeader)
DblClick事件:當在控制項上雙擊時,該事件發生。
語法:Private Sub Object_DblClick [(Index As Integer)]
DragDrop事件:在一個完整的拖放動作(即將一個控制項拖動到一個對象上,並釋放滑鼠按鈕)完成,或使用Drag方法,並將其Action參數被設定為2(Drop)時,該事件發生。
語法:Private Sub Object_DragDrop([Index As Integer, ] Source As Control, x As Single, y As Single)
DragOver事件:它在拖放操作正在進行時發生。可使用此事件對滑鼠指針在一個有效目標上的進入、離開或停頓等進行監控。滑鼠指針的位置決定接收此事件的目標對象。當State=0表示控制項正被向一個目標範圍內拖動;State=1表示控制項正被向一個目標範圍外拖動;State=2表示控制項在目標範圍內從一個位置移到了另一位置。
語法:Private Sub Object_DragOver([Index As Integer, ] Source As Control, x As Single, y As Single, State As Integer)
GotFocus事件:當對象獲得焦點時產生該事件;獲得焦點可以通過諸如Tab鍵切換,或單擊對象之類的用戶動作,或在代碼中用SetFocus方法改變焦點來實現。
語法:Private Sub Object_GotFocus [(Index As Integer)]

H~N

ItemClick事件:單擊控制項中ListItem對象時事件發生。
語法:Private Sub Object_ItemClick(ByVal Item As ListItem)
KeyDown事件:對象具有焦點並按下一個鍵時發生。
語法:Private Sub Object_KeyDown([Index As Integer, ] Keycode As Integer, Shift As Integer)
KeyPress事件:對象具有焦點並按下或鬆開一個鍵時發生。
語法:Private Sub Object_KeyPress([Index As Integer, ] KeyAscii As Integer)
KeyUp事件:對象具有焦點並鬆開一個鍵時發生。
語法:Private Sub Object_KeyUp([Index As Integer, ] Keycode As Integer, Shift As Integer)
LostFocus事件:此事件是在一個對象失去焦點時發生,焦點的丟失可以是由於製表鍵移動或單擊另一個對象操作的結果,或是代碼中使用SetFocus方法改變焦點的結果。
語法:Private Sub Object_LostFocus [(Index As Integer)]
MouseDown事件:當按下滑鼠按鈕時發生。
語法:Private Sub Object_MouseDown([Index As Integer, ] Button As Integer, Shift As Integer, x As Single, y As Single)
MouseMove事件:當移動滑鼠時發生。
語法:Private Sub Object_MouseMove([Index As Integer, ] Button As Integer, Shift As Integer, x As Single, y As Single)
MouseUp事件:當釋放滑鼠按鈕時發生。
Private Sub Object _MouseUp([Index As Integer, ] Button As Integer, Shift As Integer, x As Single, y As Single)

O~U

OLECompleteDrag事件:當源部件被放到目標部件時發生,並通知源部件拖放操作被執行或取消。
語法:Private Sub Object_OLECompleteDrag [(Effect As Long)]
OLEDragDrop事件:當源部件決定放操作能發生,且源部件被放到目標部件時,此事件發生。
語法:Private Sub Object_OLEDragDrop(Data As DataObject, effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
OLEDragOver事件:當一個部件在另一個部件上拖動時發生。
語法:Private Sub Object_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
OLEGiveFeedback事件:在每個OLEDragOver事件後發生
語法:Private Sub Object_OLEGiveFeedback(Effect As Long,DefaultCursors As Boolean)
OLESetData事件:當目標部件在源的DataObject對象上執行GetData方法,但是還沒有載入規定格式的數據之前,在源部件上發生。
語法:Private Sub Object_OLESetData(Data As DataObject, Dataformat As Integer)
OLEStartDrag事件:當部件的OLEDrag方法被執行時,或者在OLEDragMode屬性被設為Automatic,部件初始化OLE拖放操作時發生。
語法:Private Sub Object_OLEStartDrag(Data As DataObject, Allowedeffects As Long)

V~Z

Validate事件:在焦點轉換到一個控制項之前發生,此時該控制項的CausesValidation屬性值設定為True
語法:Private Sub Object_Validate(KeepFocus As Boolean)

示例

下面的示例使用Biblio.mdb資料庫作為資源,通過ListItem對象移居ListView控制項。要試用此例,請將一個ListView控制項放置在窗體上,並將代碼貼上到窗體的聲明部分。
還必須確保已將Biblio.mdb安裝在機器上。在以下代碼中檢查OpenDatabase函式中的路徑,並改變它,使之反映Biblio.mdb在機器上的實際路徑。
注意:除非添加到Microsoft DAO 3.5對象庫的“引用”,否則示例無法運行。為此,在Project選單上單擊 References。搜尋Microsoft DAO 3.5對象庫並單擊複選框來選擇。
Private Sub Form_Load()
'添加 ColumnHeaders。列寬度等於控制項寬度
'除以 ColumnHeader 對象的數目。
ListView1.ColumnHeaders. _
Add , , "Author", ListView1.Width / 3)
ListView1.ColumnHeaders. _
Add , , "Author ID", ListView1.Width / 3, _
lvwColumnCenter
ListView1.ColumnHeaders. _
Add , , "Birthdate", ListView1.Width / 3)
' Set View property to Report.
ListView1.View = lvwReport
'為數據訪問對象聲明對象變數。
Dim myDb As Database, myRs As Recordset
'設定 Database 為 BIBLIO.MDB 資料庫。
' IMPORTANT: the Biblio.mdb must be on your
' machine, and you must set the correct path to
' the file in the OpenDatabase function below.
Set myDb = DBEngine.Workspaces(0) _
.OpenDatabase("c:\Program Files\VB\BIBLIO.MDB")
'設定 recordset 為 "Authors" 表。
Set myRs = _
myDb.OpenRecordset("Authors", dbOpenDynaset)
'聲明變數以添加 ListItem 對象。
Dim itmX As ListItem
'若當前記錄不是最後一條記錄,則添加一個 ListItem 對象。
'ListItem 對象的文本使用 author 欄位。
'ListItem 對象的 SubItem(1) 使用 AuthorID 欄位。
'ListItem 對象的 SubItem(2) 使用 "Year of Birth" 欄位。
While Not myRs.EOF
Set itmX = ListView1.ListItems. _
Add(, , CStr(myRs!Author),1) 'Author 欄位。
'若 AuthorID 欄位不為空,則將 SubItem 1 設定為此欄位。
If Not IsNull(myRs!Au_id) Then
itmX.SubItems(1) = CStr(myRs!Au_id) ' Author ID。
End If
'若 birth 欄位不為空,則將 SubItem 2 設定為此欄位。
If Not IsNull(myRs![Year Born]) Then
itmX.SubItems(2) = myRs![Year Born]
End If
myRs.MoveNext '移動到下一條記錄。
Wend
End Sub

對象集合

ListItem包含文本和相關圖示(ListImage對象)的索引,除此之外,當它為報表視圖時,ListItem還包含代表子項目的字元串數組
ListItems集合包含一個或多個ListItem對象。根據標準的集合語法,可以用ListView.ListItems引用集合,而ListView.ListItems(Index)引用集合中的單個元素。其中的Index指示該ListItem的顯示位置。
說明:
ListItem對象可包含文本和圖片。然而,若要使用圖片則必須通過Icons和SmallIcons屬性引用ImageList控制項。
也可使用Icon或SmallIcon屬性變更圖像。
下列示例說明了如何將ColumnHeaders對象和若干帶有子項目的ListItem對象添加到ListView控制項中。
Private Sub Form_Load()
Dim clmX As ColumnHeader
Dim itmX As ListItem
Dim i As Integer
For i = 1 To 3
Set clmX = ListView1.ColumnHeaders.Add()
clmX.Text = "Col" & i
Next i
'添加 10 個具有相同圖示的項目到列表中
For i = 1 To 10
Set itmX = ListView1.ListItems.Add()
itmX.SmallIcon = 1
itmX.Text = "ListItem " & i
itmX.SubItems(1) = "Subitem 1"
itmX.SubItems(2) = "Subitem 2"
Next i
End Sub

相關詞條

熱門詞條

聯絡我們