一、属性
1、Name(名称)
和窗口一样,Name属性是列表框类的实例化,我们可以用【名称.属性/方法】来使用列表框控件。
2、Sorted(自动排序)
设置列表框是否按照字母自动排序。
3、MultiColumn(多列)
设置列表框是否有多列。
4、Enabled(可用)、Visible(显示)
使能和显示列表框。
5、List(列表)
根据序号获取列表子项数据。
6、ListIndex(列表序号)
当前列表选中的序号。
7、ListCount(列表大小)
返回列表的大小。
8、ItemData(子项附加数据)
存储子项的附加数据。
二、方法
1、AddItem(添加子项)、InsertItem(插入子项)
这两个都是向列表框里添加数据,AddItem是添加在末尾,InsertItem是根据序号插入数据。
2、Clear(清除)
删除列表框内的所有子项。
3、RemoveItem(删除子项)
删除列表框的一个指定的子项。
三、事件
1、LBN_SelChange事件
Sub Form1_List1_LBN_SelChange(hWndForm As hWnd, hWndControl As hWnd) '选择了列表
End Sub
选择列表项后会产生该事件。
2、LBN_DblClk事件
Sub Form1_List1_LBN_DblClk(hWndForm As hWnd, hWndControl As hWnd) '双击
End Sub
双击列表事件。
四、实例
针对列表框的属性,做一个示例。包括标题添加子项,删除子项,清空子项等。窗体设计如下:
代码如下:
Sub Form1_Shown(hWndForm As hWnd,UserData As Integer) '窗口完全显示后。UserData 来自显示窗口最后1个参数。
Label1.Caption = "双击或点按键将列表1的数据添加到列表2,并删除列表1中的数据" & vbCrLf & _
"或将列表2的数据添加到列表1,并删除列表2中的数据"
List1.AddItem "苹果"
List1.ItemData(0) = 0
List1.AddItem "橘子"
List1.ItemData(1) = 1
List1.AddItem "草莓"
List1.ItemData(2) = 2
List1.AddItem "樱桃"
List1.ItemData(3) = 3
List1.AddItem "石头"
List1.ItemData(4) = 4
List1.AddItem "芒果"
List1.ItemData(5) = 5
List1.AddItem "牛奶"
List1.ItemData(6) = 6
List1.AddItem "白菜"
List1.ItemData(7) = 7
List1.AddItem "萝卜"
List1.ItemData(8) = 8
List1.ForeColor = &H0000FF
End Sub
Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
List2.AddItem List1.List(List1.ListIndex)
List1.RemoveItem List1.ListIndex
End Sub
Sub Form1_Command2_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
List1.AddItem List2.List(List2.ListIndex)
List2.RemoveItem List2.ListIndex
End Sub
Sub Form1_List2_LBN_DblClk(hWndForm As hWnd, hWndControl As hWnd) '双击
Command2.Click
End Sub
Sub Form1_List1_LBN_DblClk(hWndForm As hWnd, hWndControl As hWnd) '双击
Command1.Click
End Sub
Sub Form1_Command3_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
List1.AddItem "西瓜"
End Sub
Sub Form1_Command4_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
Dim item As Long = iif(List2.ListIndex = -1,0,List2.ListIndex)
List1.RemoveItem item
End Sub
Sub Form1_Command5_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
List1.Clear
End Sub
Sub Form1_Command6_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) '单击
For i As Long = 0 To List1.ListCount - 1
PrintA List1.ItemData(i)
Next i
End Sub
运行效果:
完整例子:
https://github.com/rainheart311/VisualFreeBASIC/tree/master/ListBox