【发布时间】:2017-08-18 03:34:27
【问题描述】:
我发现 CEdit 控件在其属性中有选项“数字”,这样我就可以防止用户在此文本框中输入非数字字符 - 它现在是 CEdit 数字控件。 如果有一个选项“数字”,我想也许有一种方法可以删除 CEdit 的前导零,就像选项“数字”一样简单。
我尝试过Dialog Data Exchange,希望它会自动为我删除前导零,但它不会。
然后我认为这样做的方法是为每个 CEdit 数字控件添加 EN_KILLFOCUS 消息,但我发现这已经筋疲力尽了。
所以我认为更好的方法是添加 EN_KILLFOCUS,但所有 CEdit 数字控件都失去焦点事件点到一个函数,在这个函数中,我将删除“当前”控件的前导零,但在 C# 中我可以得到'current'控件,在C++中我不知道是否支持。
或继承 CEdit 以使 CEditNum - 实现失去焦点删除前导零功能,但使用此解决方案,我无法在 Visual Studio 设计窗口上设计它(我认为)。希望有类似this solution的解决方案(是Draw&Drop问题的解决方案)
无论如何,在应用最终解决方案(EN_KILLFOCUS)之前,我想确定是否有更好的方法 - 最少实现,重用 MFC 的现有实现。
关于删除前导零的一点说明:您在 CEdit 控件中输入:00001,然后失去焦点,CEdit 控件会向您显示:1. 当您在其单元格中输入数字时,这个想法就像 MS Excel。
【问题讨论】: