编辑框控件 (SEdit)¶
编辑框是用于文本输入的基础控件,支持单行和多行文本编辑,提供丰富的输入和编辑功能。
基本信息¶
- 类名:
SEdit - 控件标签:
edit - 基类:
SRichEdit - 功能:文本输入和编辑
属性说明¶
基本属性¶
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| text | string | - | 编辑框文本内容 |
| cueText | string | - | Cue文本(提示文本) |
| cueColor | color | - | Cue文本颜色 |
| readonly | bool | 0 | 是否只读 |
| password | bool | 0 | 是否为密码输入框 |
| passwordChar | string | - | 密码输入时替换文本,只允许单字符 |
| number | bool | 0 | 是否只允许输入数字 |
| multiLines | bool | 0 | 是否支持多行输入 |
| wantReturn | bool | 0 | 是否处理回车按键,在Dialog中该属性将导致Dialog的默认按钮接收不到Enter |
| autoSel | bool | 1 | 获得焦点时自动选中所有文本 |
外观属性¶
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| inset | rect | 0,0,0,0 | 内边距 |
| transparent | bool | 1 | 是否背景透明 |
| caretColor | color | - | 光标颜色 |
| maxLength | int | -1 | 最大输入长度 |
| align | string | left | 文本对齐方式 |
| vcenter | bool | 0 | 单行文本时自动垂直居中 |
| wordWrap | bool | 1 | 是否支持文本折行 |
行为属性¶
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| rich | bool | 0 | 是否支持富文本 |
| vertical | bool | 0 | 是否支持文本竖排 |
| allowBeep | bool | 1 | 是否支持Beeping |
| autoWordSel | bool | 1 | 双击时自动选择单词 |
| notifyChange | bool | 0 | 内容改变时发送EN_CHANGE通知消息 |
| hscrollBar | bool | 0 | 显示水平滚动条 |
| vscrollBar | bool | 0 | 显示垂直滚动条 |
| autoHscroll | bool | 1 | 显示水平滚动条,内容不够时自动隐藏 |
| autoVscroll | bool | 1 | 显示垂直滚动条,内容不够时自动隐藏 |
| enableDragdrop | bool | 0 | 是否允许文件拖放 |
使用示例¶
基本输入框¶
<edit pos="10,10,200,35"
name="editName"
tip="请输入用户名"
cueText="用户名"/>
密码输入框¶
<edit pos="10,45,200,70"
name="editPassword"
password="1"
passwordChar="*"
tip="请输入密码"
cueText="密码"/>
多行文本输入框¶
<edit pos="10,80,300,180"
name="editMulti"
multiLines="1"
wordWrap="1"
vscrollBar="1"
autoVscroll="1"
tip="请输入描述信息"
cueText="描述"/>
数字输入框¶
<edit pos="10,190,200,215"
name="editNumber"
number="1"
tip="请输入数字"
cueText="数字"/>
只读文本显示¶
<edit pos="10,225,200,250"
name="editReadOnly"
readonly="1"
text="只读文本"/>
事件处理¶
编辑框控件支持以下事件:
| 事件名 | EventID | 说明 |
|---|---|---|
| EVT_RE_NOTIFY | EventRENotify::EventID | 富文本编辑通知事件 |
| EVT_CMD | EventCmd::EventID | 命令事件 |
| EN_CHANGE | - | 内容改变事件 |
| EN_UPDATE | - | 内容更新事件 |
| EN_SETFOCUS | - | 获得焦点事件 |
| EN_KILLFOCUS | - | 失去焦点事件 |
// 事件处理示例
EVENT_MAP_BEGIN()
EVENT_NAME_HANDLER(L"editName", EventRENotify::EventID, OnEditNotify)
EVENT_MAP_END()
void OnEditNotify(IEvtArgs *pEvt)
{
EventRENotify *pRealEvt = sobj_cast<EventRENotify>(pEvt);
// 处理编辑框事件
}
代码操作¶
// 查找编辑框控件
SEdit *pEdit = FindChildByName2<SEdit>(L"editName");
// 设置文本
pEdit->SetWindowText(L"新文本");
// 获取文本
SStringT strText = pEdit->GetWindowText();
// 设置只读状态
pEdit->SetReadOnly(TRUE);
// 选择所有文本
pEdit->SelectAll();
// 获取选择文本
pEdit->GetSelText(strText);
最佳实践¶
- 合理使用提示文本:通过 cueText 属性提供清晰的输入提示
- 输入验证:使用 number 等属性限制输入类型
- 用户体验:为密码框设置 passwordChar 属性保护用户隐私
- 自动选择:在适当场景下使用 autoSel 提升用户体验
常见问题¶
Q: 多行编辑框无法滚动怎么办?¶
A: 确保设置了 vscrollBar 和 autoVscroll 属性。
Q: 密码框显示明文怎么办?¶
A: 检查是否设置了 password 和 passwordChar 属性。
Q: 编辑框无法获得焦点怎么办?¶
A: 确保控件设置了 focusable 属性为 true。
相关控件¶
- 富文本编辑框(SRichEdit) - 功能更丰富的文本编辑控件
- 组合框(SComboBox) - 结合下拉列表的编辑框
- 组合视图(SComboView) - 支持复杂项的组合框