Skip to content

组合框控件 (SComboBox)

Warning

The current page still doesn't have a translation for this language.

You can read it through google translate.

组合框是一个集成了文本输入框和下拉列表的复合控件,允许用户从预定义的选项中选择一项,或在某些情况下直接输入新值。

基本信息

  • 类名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(L"cbxBasic");

// 获取当前选中项 int nCurSel = pCombo->GetCurSel();

// 设置当前选中项 pCombo->SetCurSel(1);

// 获取选项数量 int nCount = pCombo->GetCount();

// 获取指定项文本 SStringT strText; pCombo->GetLBText(0, strText);

// 添加新项 pCombo->AddString(L"新选项");

// 删除指定项 pCombo->DeleteString(0); ```

最佳实践

  1. 合理设置下拉高度:根据选项数量设置合适的 dropHeight 值,避免列表过长或过短
  2. 视觉一致性:使用 btnSkinitemSkin 属性保持界面风格统一
  3. 用户体验:为选项添加图标以提高可识别性,合理设置图标和文本位置
  4. 动画效果:通过 animateTime 属性添加展开动画,提升交互体验

常见问题

Q: 下拉列表显示不完整怎么办?

A: 检查 dropHeight 属性是否设置合适,确保能显示足够多的选项。

Q: 选中项颜色显示不正确怎么办?

A: 确保设置了 colorItemSelBkgndcolorSelText 属性。

Q: 下拉按钮样式异常怎么办?

A: 检查 btnSkin 是否正确设置,或尝试设置 autoFitDropBtn 属性。

相关控件