全部
我想知道如何在wxTextCtrl“多行”样式中实现文本字符数限制。
我需要: 1)达到限制时阻止用户输入(仅保留限制范围内的字符)。 2) 当用户在字符串的任何位置输入或粘贴时,请将光标保持在正确的位置(就在插入字符串之后),并确保 1)
例如,我将数量限制为10: 当我在wxtextctrl中输入:
1)我可以输入直到字符数达到10,然后我不能做任何插入(但我可以删除一些字符,然后输入)。 比如:我可以输入1234567890
2)如果字符数没有达到限制,我可以在现有文本的任何位置输入或粘贴一些字符,直到达到限制。 比如:我输入1234,然后我想在现有文本的2和3之间插入34567890,结果是1234567834,光标就在8后面
我该怎么做?
谢谢
最佳答案
只需使用 wxTextCtrl::SetMaxLength方法(仅从2.3.2版本开始可用,请注意)
编辑:上述解决方案不适用于GTK+。如果您遇到这种情况,则必须编写一个扩展 wxTextCtrl
的类并执行您需要的操作。为此,一种可能的方法是:
- 重写
SetMaxLength
函数以将最大长度保存在类的属性中 - 处理
EVT_TEXT(id, func)
事件。在处理程序中,如果达到最大长度,则开始忽略输入(您需要弄清楚如何);如果您低于最大长度,请再次接受输入。
关于c++ - 如何在wxTextctrl中实现字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907518/