纯正的ListBox:既可以通过以下语句来创建
HWND hFontList = CreateWindow("ListBox",NULL,
WS_CHILD|WS_VISIBLE|LBS_STANDARD,
20,30,210,280,hWnd,HMENU(ID_LISTBOX),hInstance,NULL);
也可以在IDE中添加一个列表框资源并加载
HWND hFontList = GetDlgItem(hWnd, IDC_LIST1);
列表框是一种矩形窗口,它向用户提交一种可供选择的选项。
在创建列表框控制的语句中,最重要的是第三个字段。在这个字段中定义了该窗口类的样式:
WS_CHILD|WS_VISIBLE|LBS_STANDARD
在这里,我相信你已经不会对 LBS_STANDARD 标志是另一个大选项表中的一个选项感到惊奇。这是 Windows 处理问题时的一种惯用手法。下面列出了一些在通常情况下使用的选项:
LBS_MULTIPLESEL:
用户可以一次选择多个选项。
LBS_EXTENDEDSELP:
可以使用 Shift 键和鼠标器或专用的组合键来选择多个选项。
LBS_NOTIFY:
当列表框不具备这个样式时,其父窗口将不知道用户是否已经单击或双击列表框的某项。
LBS_STANDARD:
采用标准的列表框,它具有边框和 LBS_NOTIFY 样式。
LBS_OWNERDRAW:
当你想在列表框显示位图或其他非标准选项时,需要这个样式。
LBS_USETTABSTOPS:
在一个列表框内仿真多个栏目。
LBS_WANTKEYBOARDINPUT:
焦点在列表框的时候,程序可以接收键盘输入。
在这些可选的样式中,LBS_STANDARD 和 LBS_MULTIPLESEL 是最重要的两项。多选列表框工作起来就象 File Manager 的窗口那样,它们允许用户一次选择多个选项。
与列表框通信是一个相当复杂的课题。因此,这方面的深入讨论推迟到下一章进行。
在这里只给出几个简单的例子加以示范。如果需要把一个字符串加到列表框,你可以这样做:向列表框发送一条 LB_ADDSTRING 消息:
char * MyString[]="skyline";
SendMessage(hListBox,LB_ADDSTRING,0,LPARAM(MyString));
反过来,如果需要从列表框检索一个字符串,你可以这样做:首先使用 LB_GETCURSEL 消息来获取当前被选择的选项的索引:
int index = SendMessage(hFontList,LB_GETCURSEL,0,0);
等同于
int index = ListBox_GetCurSel(hFontList);
然后使用这个索引及 LB_GETTEXT 消息来检索这个字符串:
SendMessage(hListBox,LB_GETTEXT,index,LONG(lpszBuffer));
ListBox在VB中:ListBox作为vb的一个控件
中文名称列表框
可以通过vb的代码添加、修改列表框的内容
列表框可以在编程中显示各种需要的数值
方法:
Sub AddItem(Item As String, [Index])
VB.ListBox 的成员
添加一项到 Listbox 控件。
参数:
Item:所要添加的字符串
Index:可选,将字符串插入在第Index项前面
例:
Dim i%
For i = 1 To 10
List1.AddItem CStr(i)
Next
List1.AddItem "你好", 5
效果:
1
2
3
4
你好
5
6
7
8
9
10
方法:
Sub AddString(CString s)
例:
Dim i%
For i = 1 To 10
List1.AddString( CStr(i))
Next
List1.AddItem "你好", 5
效果:
1
2
3
4
你好
5
6
7
8
9
10
Sub Clear()
VB.ListBox 的成员
清除列表所有项。
参数:无
例:在AddItem的例子后添加
List1.Clear
这样你的列表框中的内容就都清除了
Sub RemoveItem(Index As Integer)
VB.ListBox 的成员
从一个 ListBox 控件中删除一项。
参数:
Index:你要删除的那项的索引
例:在AddItem的例子后添加
List1.RemoveItem 3
效果:
1
2
3
5
你好
6
7
8
9
10
属性:
Property Columns As Integer
VB.ListBox 的成员
返回/设置一个值,决定列表框为是在一列中(值为0时)垂直滚动,还是多个列中(值大于0时)水平滚动。
Property List(Integer) As String
VB.ListBox 的成员
返回/设置控件的列表部分中包含的项。
Property ListCount As Integer
只读
VB.ListBox 的成员
返回控件的列表部分中的项目数。
Property ListIndex As Integer
VB.ListBox 的成员
返回/设置该控件中当前选定项目的索引值。
Property MultiSelect As Integer
只读
VB.ListBox 的成员
返回/设置一个值,决定用户是否可以在一个控件中做多重选择。
Property NewIndex As Integer
只读
VB.ListBox 的成员
返回添加到控件中的最近一个项目的索引。
Property SelCount As Integer
只读
VB.ListBox 的成员
返回 ListBox 控件选定的项目数。
Property Selected(Integer) As Boolean
VB.ListBox 的成员
返回/设置控件中项目的选定状态。
Property Sorted As Boolean
只读
VB.ListBox 的成员
指出控件元素是否自动按字母顺序排序。
Property Style As Integer
只读
VB.ListBox 的成员
返回/设置一个值,决定是否将复选框显示在 ListBox 控件中。
Property Text As String
VB.ListBox 的成员
返回当前选中项的文本。
Property TopIndex As Integer
VB.ListBox 的成员
返回/设置在控件中显示在最顶端的项目。
-------------------------------------------------------------------
ListBox 和 ComboBox 为用户提供了选择。按照缺省规定,选项以垂直单列方式显示,也可以设置成多列方式。如果项目数量超过 ComboBox 或 ListBox 所能显示的数目,ScrollBar 自动出现在控件上。于是用户可以在列表中上下左右滚动。
ComboBox 兼有 TextBox 和 ListBox 两者的功能。该控件允许用户通过键入文本或选择列表中的项目来进行选择。
与其它含有单值的控件相反,例如 Label 的 Caption 属性或 TextBox 的 text 属性,ListBox 和 ComboBox 含有多个值或值的集合。在运行时用内置的方法增加、删除及保持集合中的值。要将几条项目添加到名为 List1 的 ListBox 中,其代码如下:
List1.AddItem "Paris"
List1.AddItem "New York"
List1.AddItem "San Francisco"
ListBox 和 ComboBox 是在有限空间为用户提供大量选项的有效方法。
详细信息 关于 ListBox 和 ComboBox 控件的详细信息,请参阅“使用 Visual Basic 的标准控件”。