【问题标题】:How to implement char limit in wxTextctrl如何在 wxTextctrl 中实现字符限制
【发布时间】:2013-04-09 16:33:16
【问题描述】:

全部

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

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

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

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

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

我该怎么做?

谢谢

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

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

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

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

    【讨论】:

    • 我试过了,还是不行。感谢帮助,T^T 问题是我的环境是GTK,在WX文档中指出: 注意在GTK+下,这个功能只能和“单行”文本控件一起使用。兼容性 仅在 wxWidgets 2.3.2 开始的 wxMSW/wxGTK 中实现。
    • 非常感谢,您能给我举个使用 Connect 和 handler 方式的例子吗?
    • 如果您的意思是如何处理事件,请阅读here
    • 我不应该为你解决每一个细节,这违背了网站的意图。我只能给你一些指导。顺便说一句,在我给你的关于事件处理的链接中,有一些代码示例,包括过滤关键事件
    • 好的,没问题,我试试看能不能搞定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多