c++ - 如何在wxTextctrl中实现字符限制

标签 c++ wxwidgets

全部

我想知道如何在wxTextCtrl“多行”样式中实现文本字符数限制。

我需要: 1)达到限制时阻止用户输入(仅保留限制范围内的字符)。 2) 当用户在字符串的任何位置输入或粘贴时,请将光标保持在正确的位置(就在插入字符串之后),并确保 1)

例如,我将数量限制为10: 当我在wxtextctrl中输入:

1)我可以输入直到字符数达到10,然后我不能做任何插入(但我可以删除一些字符,然后输入)。 比如:我可以输入1234567890

2)如果字符数没有达到限制,我可以在现有文本的任何位置输入或粘贴一些字符,直到达到限制。 比如:我输入1234,然后我想在现有文本的2和3之间插入34567890,结果是1234567834,光标就在8后面

我该怎么做?

谢谢

最佳答案

只需使用 wxTextCtrl::SetMaxLength方法(仅从2.3.2版本开始可用,请注意)

编辑:上述解决方案不适用于GTK+。如果您遇到这种情况,则必须编写一个扩展 wxTextCtrl 的类并执行您需要的操作。为此,一种可能的方法是:

  1. 重写 SetMaxLength 函数以将最大长度保存在类的属性中
  2. 处理 EVT_TEXT(id, func) 事件。在处理程序中,如果达到最大长度,则开始忽略输入(您需要弄清楚如何);如果您低于最大长度,请再次接受输入。

关于c++ - 如何在wxTextctrl中实现字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907518/

相关文章:

c++ - 更改指针指向的对象,但对象不会更改

c++ - 如何使用 Visual Studio 2008 构建 libevent 版本 2.0.10

c++ - 通过 PageText 以编程方式在 wxNotebook 上添加/删除选项卡

winapi - 在 Windows API 中设置菜单的宽度

c++ - for循环中的共享指针 vector getter导致问题

C++ LoadLibrary 抛出 First-Chance Exception,但有效吗?

c++ - 使用模板参数指定策略

c++ - 如何在 wxWidgets 的同一窗口中拖放文件和文本?

python - 在wxpython中恢复Windows

c++ - wxWidgets 中的嵌套自定义控件