Skip to content

编辑框控件 (SEdit)

Warning

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

You can read it through google translate.

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

基本信息

  • 类名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);

最佳实践

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

常见问题

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

A: 确保设置了 vscrollBarautoVscroll 属性。

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

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

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

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

相关控件