在 wxTextCtrl 上,最大长度回调

On wxTextCtrl max length callback

本文关键字:回调 wxTextCtrl      更新时间:2023-10-16

我一直在使用wxTextCtrl,发现了一件有趣的事情。当我将最大长度设置为小数字(250、500、10000)时,它运行良好。但是当我输入更大的数字(20000、100000)时,它不起作用(我可以超过限制并且没有回调)。不知道如何解决它。请帮忙。

wx小部件 3.0.2

窗户

wxTextCtrl wxTE_BESTWRAP | wxTE_MULTILINE | wxBORDER_NONE | wxTE_AUTO_SCROLL |wxTE_AUTO_URL

当然,理想情况下,SetMaxLength()应该适用于任何长度,但它实际上适用于小长度和单行文本输入控件,例如将国家/地区代码限制为 2 或 3 个字母。在可移植代码中,您根本无法将其与wxTE_MULTILINE控件一起使用,如文档中所述,因为这不适用于 GTK+。

所以我的建议是停止将其用于它不是为它设计的东西,即使原则上这可能是 wxMSW 中的一个可以修复的错误——但由于解释的原因,这是一个相当低优先级的错误。

在文件 textctrl.cpp, 方法

中找到
bool wxTextCtrl::HasSpaceLimit(unsigned int *len) const

使一切成为可能的线

return *len < 10001;