跳转至

编辑框控件 (SEdit)

编辑框是用于文本输入的基础控件,支持单行和多行文本编辑,提供丰富的输入和编辑功能。

基本信息

  • 类名SEdit
  • 控件标签edit
  • 基类SRichEdit
  • 功能:文本输入和编辑

属性说明

SEdit 是对 SRichEdit 的薄封装(标签 edit)。SEdit 自身只增加了占位提示属性,其余属性全部转发给底层 SRichEdit,因此与富文本框(SRichEdit)属性一致。

自身(占位提示)属性

属性名 类型 默认值 说明
cueText string - 占位提示文本(内容为空时显示,获得焦点后消失)
cueColor color #cccccc 占位提示文本颜色

转发自 SRichEdit 的常用属性

属性名 类型 默认值 说明
text string - 编辑框内容
password bool false 是否密码框
passwordChar string - 密码掩码字符
readOnly bool false 是否只读
multiLines bool false 是否多行
wordWrap bool true 多行时是否自动换行
vertical bool false 是否竖排文本
number bool false 仅允许输入数字
upperCase / lowerCase bool false 输入自动转大小写
wantReturn bool false 多行时是否允许回车换行
wantTab bool false 是否捕获 Tab 键
maxBuf int - 最大字符数(- 表示不限)
colorText color - 文本颜色
align enum left 水平对齐:left / center / right
autoSel bool false 获得焦点时是否全选
transparent bool false 是否透明背景
vcenter bool false 单行时垂直居中
hscrollBar / vscrollBar bool false 是否显示水平 / 垂直滚动条
autoHscroll / autoVscroll bool false 输入超界时是否自动滚动
enableDragdrop bool - 是否允许拖放文本

字体、颜色、可用、可见等通用属性见通用属性。完整属性以 SRichEdit 为准。

使用示例

基本输入框

<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);

最佳实践

  1. 合理使用提示文本:通过 cueText 属性提供清晰的输入提示
  2. 输入验证:使用 number 等属性限制输入类型
  3. 用户体验:为密码框设置 passwordChar 属性保护用户隐私
  4. 自动选择:在适当场景下使用 autoSel 提升用户体验

常见问题

Q: 多行编辑框无法滚动怎么办?

A: 确保设置了 vscrollBarautoVscroll 属性。

Q: 密码框显示明文怎么办?

A: 检查是否设置了 passwordpasswordChar 属性。

Q: 编辑框无法获得焦点怎么办?

A: 确保控件设置了 focusable 属性为 true。

相关控件