查看源码 wxListBox (wx v2.4.3)
列表框用于选择一个或多个字符串列表中的项。
字符串显示在一个滚动框中,选定的字符串以反色显示。列表框可以是单选(如果选择一个项目,则会移除之前的选择)或多选(单击一个项目会独立于其他选择项切换该项目的开/关状态)。
列表框元素从零开始编号,虽然元素的最大数量没有限制,但通常最好使用虚拟控件,无需一次性添加所有项目,例如 wxDataViewCtrl
(在 wx 中未实现)或带有 wxLC_VIRTUAL
样式的wxListCtrl
,一旦需要显示数百个以上的项目,就不应该使用列表框,因为从性能和用户界面的角度来看,该控件都没有针对大量项目进行优化。
请注意,列表框不支持除了 TAB
之外的控制字符。
样式
此类支持以下样式
wxLB_SINGLE: 单选列表。
wxLB_MULTIPLE: 多选列表:用户可以打开和关闭多个项目。这与 wxGTK2 端口中的 wxLB_EXTENDED 相同。
wxLB_EXTENDED: 扩展选择列表:用户可以使用
SHIFT
或CTRL
键以及光标移动键或鼠标来扩展选择。wxLB_HSCROLL: 如果内容太宽,则创建水平滚动条(仅限 Windows)。
wxLB_ALWAYS_SB: 始终显示垂直滚动条。
wxLB_NEEDED_SB: 仅在需要时创建垂直滚动条。
wxLB_NO_SB: 不创建垂直滚动条(仅限 wxMSW 和 wxGTK)。
wxLB_SORT: 列表框内容按字母顺序排序。请注意,
wxLB_SINGLE
、wxLB_MULTIPLE
和wxLB_EXTENDED
样式是互斥的,您最多只能指定其中一个(默认情况下为单选)。另请参阅 overview_windowstyles。
参见
此类派生自以下类,并可以使用以下类的函数:
wxWidgets 文档: wxListBox
事件
从此类发出的事件类型
摘要
函数
取消选择列表框中的一个项目。
销毁对象
使用当前选定项目的位置填充整数数组。
返回位于 point
的项目,如果 point
没有项目,则返回 wxNOT_FOUND
。
这是一个为了方便而提供的重载成员函数。它与上面的函数唯一的区别在于它接受的参数。
在指定位置之前插入给定数量的字符串。
确定是否选中一个项目。
默认构造函数。
构造函数,创建并显示列表框。
用给定的项目替换当前控件内容。
将指定的项目设置为第一个可见项目。
类型
-type wxListBox() :: wx:wx_object().
函数
-spec create(This, Parent, Id, Pos, Size, Choices) -> boolean() when This :: wxListBox(), Parent :: wxWindow:wxWindow(), Id :: integer(), Pos :: {X :: integer(), Y :: integer()}, Size :: {W :: integer(), H :: integer()}, Choices :: [unicode:chardata()].
-spec create(This, Parent, Id, Pos, Size, Choices, [Option]) -> boolean() when This :: wxListBox(), Parent :: wxWindow:wxWindow(), Id :: integer(), Pos :: {X :: integer(), Y :: integer()}, Size :: {W :: integer(), H :: integer()}, Choices :: [unicode:chardata()], Option :: {style, integer()} | {validator, wx:wx_object()}.
取消选择列表框中的一个项目。
备注:这仅适用于多选列表框。
-spec destroy(This :: wxListBox()) -> ok.
销毁对象
-spec getSelections(This) -> Result when Result :: {Res :: integer(), Selections :: [integer()]}, This :: wxListBox().
使用当前选定项目的位置填充整数数组。
返回:选择的数量。
备注:在多选列表框中使用此函数。
参见
-spec hitTest(This, Point) -> integer() when This :: wxListBox(), Point :: {X :: integer(), Y :: integer()}.
返回位于 point
的项目,如果 point
没有项目,则返回 wxNOT_FOUND
。
目前为 wxMSW、wxMac 和 wxGTK2 端口实现。
返回:位于点的项目,如果未实现或该项目不存在,则返回 wxNOT_FOUND。
自:2.7.0
这是一个为了方便而提供的重载成员函数。它与上面的函数唯一的区别在于它接受的参数。
-spec insertItems(This, Items, Pos) -> ok when This :: wxListBox(), Items :: [unicode:chardata()], Pos :: integer().
在指定位置之前插入给定数量的字符串。
确定是否选中一个项目。
返回:如果给定项目被选中则返回 true,否则返回 false。
-spec new() -> wxListBox().
默认构造函数。
-spec new(Parent, Id) -> wxListBox() when Parent :: wxWindow:wxWindow(), Id :: integer().
等同于 new(Parent, Id, [])
。
-spec new(Parent, Id, [Option]) -> wxListBox() when Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {choices, [unicode:chardata()]} | {style, integer()} | {validator, wx:wx_object()}.
构造函数,创建并显示列表框。
请参阅其他 new/3
构造函数;唯一的区别是此重载采用 wxArrayString
(在 wx 中未实现),而不是指向 wxString
数组的指针(在 wx 中未实现)。
-spec set(This, Items) -> ok when This :: wxListBox(), Items :: [unicode:chardata()].
用给定的项目替换当前控件内容。
请注意,如果您需要添加大量项目,调用此方法通常比逐个添加它们快得多。
-spec setFirstItem(This, N) -> ok when This :: wxListBox(), N :: integer(); (This, String) -> ok when This :: wxListBox(), String :: unicode:chardata().
将指定的项目设置为第一个可见项目。