如何在wxTextctrl中实现char限制

时间:2013-04-09 16:33:16

标签: c++ wxwidgets

所有

我想知道如何在wxTextCtrl“multiline”风格中实现文本字符数限制。

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

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

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

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

我该怎么做?

由于

1 个答案:

答案 0 :(得分:2)

只需使用wxTextCtrl::SetMaxLength方法(仅限版本2.3.2,请注意)

修改:上述解决方案不适用于GTK +。如果您遇到这种情况,则必须编写一个扩展wxTextCtrl并完成所需操作的课程。要做到这一点,可能的方法是:

  1. 覆盖SetMaxLength功能以保存班级属性中的最大长度
  2. 处理EVT_TEXT(id, func)事件。在处理程序中,如果达到最大长度,则开始忽略输入(您需要弄清楚如何);如果你低于最大长度,再次接受输入。