2

全部

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

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

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

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

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

我怎样才能做到这一点?

谢谢

4

1 回答 1

2

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

编辑:上面的解决方案不适用于 GTK+。如果你在这种情况下,你将不得不编写一个扩展wxTextCtrl并做你需要的类。为此,一种可能的方法:

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