查看源码 wxListBox (wx v2.4.3)

列表框用于选择一个或多个字符串列表中的项。

字符串显示在一个滚动框中,选定的字符串以反色显示。列表框可以是单选(如果选择一个项目,则会移除之前的选择)或多选(单击一个项目会独立于其他选择项切换该项目的开/关状态)。

列表框元素从零开始编号,虽然元素的最大数量没有限制,但通常最好使用虚拟控件,无需一次性添加所有项目,例如 wxDataViewCtrl(在 wx 中未实现)或带有 wxLC_VIRTUAL 样式的wxListCtrl,一旦需要显示数百个以上的项目,就不应该使用列表框,因为从性能和用户界面的角度来看,该控件都没有针对大量项目进行优化。

请注意,列表框不支持除了 TAB 之外的控制字符。

样式

此类支持以下样式

  • wxLB_SINGLE: 单选列表。

  • wxLB_MULTIPLE: 多选列表:用户可以打开和关闭多个项目。这与 wxGTK2 端口中的 wxLB_EXTENDED 相同。

  • wxLB_EXTENDED: 扩展选择列表:用户可以使用 SHIFTCTRL 键以及光标移动键或鼠标来扩展选择。

  • wxLB_HSCROLL: 如果内容太宽,则创建水平滚动条(仅限 Windows)。

  • wxLB_ALWAYS_SB: 始终显示垂直滚动条。

  • wxLB_NEEDED_SB: 仅在需要时创建垂直滚动条。

  • wxLB_NO_SB: 不创建垂直滚动条(仅限 wxMSW 和 wxGTK)。

  • wxLB_SORT: 列表框内容按字母顺序排序。请注意,wxLB_SINGLEwxLB_MULTIPLEwxLB_EXTENDED 样式是互斥的,您最多只能指定其中一个(默认情况下为单选)。另请参阅 overview_windowstyles。

参见

此类派生自以下类,并可以使用以下类的函数:

wxWidgets 文档: wxListBox

事件

从此类发出的事件类型

摘要

函数

取消选择列表框中的一个项目。

销毁对象

使用当前选定项目的位置填充整数数组。

返回位于 point 的项目,如果 point 没有项目,则返回 wxNOT_FOUND

这是一个为了方便而提供的重载成员函数。它与上面的函数唯一的区别在于它接受的参数。

在指定位置之前插入给定数量的字符串。

确定是否选中一个项目。

默认构造函数。

构造函数,创建并显示列表框。

用给定的项目替换当前控件内容。

将指定的项目设置为第一个可见项目。

类型

-type wxListBox() :: wx:wx_object().

函数

链接到此函数

create(This, Parent, Id, Pos, Size, Choices)

查看源码
-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()].

等同于 create(This, Parent, Id, Pos, Size, Choices, [])

-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 deselect(This, N) -> ok when This :: wxListBox(), N :: integer().

取消选择列表框中的一个项目。

备注:这仅适用于多选列表框。

-spec destroy(This :: wxListBox()) -> ok.

销毁对象

-spec getSelections(This) -> Result
                       when Result :: {Res :: integer(), Selections :: [integer()]}, This :: wxListBox().

使用当前选定项目的位置填充整数数组。

返回:选择的数量。

备注:在多选列表框中使用此函数。

参见

链接到此函数

hitTest(This, Point)

查看源码
-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 hitTest(This, X, Y) -> integer() when This :: wxListBox(), X :: integer(), Y :: integer().

这是一个为了方便而提供的重载成员函数。它与上面的函数唯一的区别在于它接受的参数。

链接到此函数

insertItems(This, Items, Pos)

查看源码
-spec insertItems(This, Items, Pos) -> ok
                     when This :: wxListBox(), Items :: [unicode:chardata()], Pos :: integer().

在指定位置之前插入给定数量的字符串。

-spec isSelected(This, N) -> boolean() when This :: wxListBox(), N :: 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().

将指定的项目设置为第一个可见项目。