组合框控件 (SComboBox)¶
组合框是一个集成了文本输入框和下拉列表的复合控件,允许用户从预定义的选项中选择一项,或在某些情况下直接输入新值。
基本信息¶
- 类名:
SComboBox
- 控件标签:
combobox
- 基类:
SComboBase
- 功能:提供下拉选择列表与可选的文本输入功能
属性说明¶
基本属性¶
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
dropDown | bool | 1 | 下拉样式或编辑样式(1-下拉,0-编辑) |
dropHeight | int | - | 下拉列表高度 |
curSel | int | - | 选中项 |
animateTime | int | - | 下拉框弹出动画时长 |
autoFitDropBtn | bool | 0 | 自适应下拉按钮皮肤(0-否,1-是) |
外观属性¶
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
btnSkin | string | - | 下拉按钮皮肤 |
itemSkin | string | - | 列表项皮肤 |
iconSkin | string | - | 图标皮肤 |
colorItemBkgnd | color | - | 列表行背景颜色 |
colorItemBkgnd2 | color | - | 列表行背景颜色2,颜色隔行显示时有效 |
colorItemSelBkgnd | color | - | 选中行背景颜色 |
colorItemHotBkgnd | color | - | 鼠标浮动的行颜色 |
colorText | color | - | 文字颜色 |
colorSelText | color | - | 选中文字颜色 |
位置属性¶
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
icon-x | int | - | 图标显示位置X |
icon-y | int | - | 图标显示位置Y |
text-x | int | - | 文本显示位置X |
text-y | int | - | 文本显示位置Y |
使用示例¶
基本组合框¶
``xml
### 自定义样式的组合框
``xml
<combobox name="cbxStyled"
pos="10,50,200,75"
dropDown="1"
dropHeight="200"
btnSkin="skin_combobox_btn"
itemSkin="skin_combobox_item"
colorText="#333333"
colorItemBkgnd="#FFFFFF"
colorItemSelBkgnd="#007ACC">
<items>
<item text="选项A"/>
<item text="选项B"/>
<item text="选项C"/>
</items>
</combobox>
带图标的组合框¶
``xml
## 事件处理
组合框控件支持以下事件:
| 事件名 | EventID | 说明 |
|--------|---------|------|
| EVT_CB_SELCHANGE | EventCBSelChange::EventID | 选择项改变事件 |
| EVT_CB_DROPDOWN | EventCBDropDown::EventID | 下拉列表展开事件 |
| EVT_CB_CLOSEUP | EventCBCloseUp::EventID | 下拉列表关闭事件 |
``cpp
// 事件处理示例
EVENT_MAP_BEGIN()
EVENT_NAME_HANDLER(L"cbxBasic", EventCBSelChange::EventID, OnCBSelChange)
EVENT_MAP_END()
void OnCBSelChange(IEvtArgs *pEvt)
{
EventCBSelChange *pRealEvt = sobj_cast<EventCBSelChange>(pEvt);
int nCurSel = pRealEvt->nCurSel;
// 处理选择项改变
}
代码操作¶
``cpp // 查找组合框控件 SComboBox *pCombo = FindChildByName2
// 获取当前选中项 int nCurSel = pCombo->GetCurSel();
// 设置当前选中项 pCombo->SetCurSel(1);
// 获取选项数量 int nCount = pCombo->GetCount();
// 获取指定项文本 SStringT strText; pCombo->GetLBText(0, strText);
// 添加新项 pCombo->AddString(L"新选项");
// 删除指定项 pCombo->DeleteString(0); ```
最佳实践¶
- 合理设置下拉高度:根据选项数量设置合适的 dropHeight 值,避免列表过长或过短
- 视觉一致性:使用 btnSkin 和 itemSkin 属性保持界面风格统一
- 用户体验:为选项添加图标以提高可识别性,合理设置图标和文本位置
- 动画效果:通过 animateTime 属性添加展开动画,提升交互体验
常见问题¶
Q: 下拉列表显示不完整怎么办?¶
A: 检查 dropHeight 属性是否设置合适,确保能显示足够多的选项。
Q: 选中项颜色显示不正确怎么办?¶
A: 确保设置了 colorItemSelBkgnd 和 colorSelText 属性。
Q: 下拉按钮样式异常怎么办?¶
A: 检查 btnSkin 是否正确设置,或尝试设置 autoFitDropBtn 属性。
相关控件¶
- 组合视图(SComboView) - 支持复杂项的组合框
- 编辑框(SEdit) - 简单文本输入控件
- 列表框(SListBox) - 简单列表选择控件