复选框控件 (SCheckBox)¶
Warning
The current page still doesn't have a translation for this language.
You can read it through google translate.
复选框是一种常用的选择控件,允许用户选择或取消选择某个选项。它通常用于多选场景或单个开关选项。
基本信息¶
- 类名:
SCheckBox - 控件标签:
check - 基类:
SWindow - 功能:提供选中/未选中状态切换
属性说明¶
自身属性¶
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| checked | bool | false | 初始化选中状态(1/true 为选中,0/false 为未选中) |
| skin | string | SKIN_SYS_CHECKBOX | 复选框图标皮肤(内置默认皮肤) |
| focusSkin | string | SKIN_SYS_FOCUSCHECKBOX | 获得焦点时的图标皮肤 |
| sep | int | 4 | 复选框图标与文本之间的间距(像素) |
文本(
text)、字体(font/fontHover/fontPush/fontDisable)、 颜色(colorText/colorTextHover/colorTextPush/colorTextDisable)、 对齐(align/valign)、可用(enable)、可见(visible)、display等属性 继承自SWindow/SwndStyle,详见通用属性。
使用示例¶
基本复选框¶
<check name="chkOption"
pos="10,10,200,30"
text="启用此选项"/>
默认选中的复选框¶
<check name="chkDefault"
pos="10,40,200,60"
text="默认选中项"
checked="1"/>
自定义样式的复选框¶
<check name="chkStyled"
pos="10,70,200,90"
text="自定义样式"
skin="skin_checkbox"
focusSkin="skin_checkbox_focus"
colorText="#333333"
colorTextHover="#FF0000"/>
不同对齐方式的复选框¶
<check name="chkLeft"
pos="10,100,200,120"
text="左对齐"
align="left"/>
<check name="chkCenter"
pos="10,130,200,150"
text="居中对齐"
align="center"/>
<check name="chkRight"
pos="10,160,200,180"
text="右对齐"
align="right"/>
事件处理¶
复选框控件支持以下事件:
| 事件名 | EventID | 说明 |
|---|---|---|
| EVT_CMD | EventCmd::EventID | 命令事件(点击时触发) |
| EVT_STATE_CHANGED | EventStateChanged::EventID | 状态改变事件 |
// 事件处理示例
EVENT_MAP_BEGIN()
EVENT_NAME_COMMAND(L"chkOption", OnChkOption)
EVENT_NAME_HANDLER(L"chkOption", EventStateChanged::EventID, OnChkStateChanged)
EVENT_MAP_END()
void OnChkOption()
{
SCheckBox *pChk = FindChildByName2<SCheckBox>(L"chkOption");
BOOL bChecked = pChk->IsChecked();
// 处理复选框点击
}
void OnChkStateChanged(IEvtArgs *pEvt)
{
EventStateChanged *pRealEvt = sobj_cast<EventStateChanged>(pEvt);
int nNewState = pRealEvt->GetNewState();
// 处理状态改变
}
代码操作¶
// 查找复选框控件
SCheckBox *pCheck = FindChildByName2<SCheckBox>(L"chkOption");
// 获取选中状态
BOOL bChecked = pCheck->IsChecked();
// 设置选中状态
pCheck->SetCheck(TRUE); // 选中
pCheck->SetCheck(FALSE); // 取消选中
// 切换选中状态
pCheck->ToggleCheck();
// 启用/禁用控件
pCheck->EnableWindow(FALSE); // 禁用
pCheck->EnableWindow(TRUE); // 启用
最佳实践¶
- 状态初始化:通过 checked 属性设置初始状态,避免运行时额外设置
- 视觉反馈:使用 focusSkin 提供焦点状态的视觉反馈
- 文本样式:通过不同状态的字体和颜色属性增强用户体验
- 合理分组:将相关的复选框组织在一起,使用适当的间距和标签
常见问题¶
Q: 复选框状态无法正确获取怎么办?¶
A: 确保通过正确的事件处理函数获取状态,使用 IsChecked() 方法获取当前状态。
Q: 焦点状态显示不正确怎么办?¶
A: 检查是否设置了 focusSkin 属性,以及控件是否具有焦点。
Q: 文本对齐效果不明显怎么办?¶
A: 确保复选框宽度足够显示对齐效果,文本区域有足够的空间。
相关控件¶
- 单选框(SRadioBox) - 互斥选择控件
- 开关按钮(SToggle) - 另一种开关控件
- 按钮(SButton) - 基础交互控件