我有一个Textedit Control,我希望以某种方式表现:
当控件具有输入焦点时,我想只允许输入正整数(非零)。我通过使用Properties.Mask来实现这一目标,并且工作正常。
当控件没有输入焦点时,我希望它显示输入的数字,但最后显示“,00”。
所以基本上,当我输入内容时,我只会看到我输入的内容,例如“17”但是当控制失去焦点时,我希望它显示“十七”。所以我只允许输入完整的正数,但Controll将始终添加“,00”。
我的理解是基本上有两种不同的“模式”:DisplayMode和EditMode。
EditMode =控件具有焦点。
DisplayMode =控件没有焦点。
在EditMode中,我可以在Textedit Control中输入内容。我可以和不能进入的是由面具决定的。
当我失去焦点时,它会进入DisplayMode。在这里,我无法在TextEdit中输入任何内容,但现在显示的文本不再由掩码确定,而是由属性“Properties.DisplayFormat”决定。因此,为了实现我的目标,我尝试将DisplayFormat.FormatString设置为“0.00”,这样它总是会显示两个小数位“x,00”。
不知何故,这不能按预期工作。 DisplayFormat似乎没有做任何事情,即使在DisplayMode中,TextEdit仍然只显示没有小数位的整数。
我意识到我可以使用事件解决这个问题,但我认为这就是DisplayFormat,EditFormat和Mask的用途,我真的不想处理那些小的事件。
答案 0 :(得分:1)
对DevExpress知识库topic DisplayFormat
的处理无法在未绑定模式下工作。
格式化问题的发生是因为未绑定的文本编辑器存储 作为字符串的值,因此无法应用格式。
如果您使用XtraEditors 3或更高版本,您可能希望设置编辑器 Mask.MaskType 属性为数字。在这种情况下,编辑器是强制的 将编辑值作为数字处理,因此可以对其进行格式化。
如果您不想使用数字(或日期时间)模板,请使用 ParseEditValue 事件,用于将字符串转换为数字。
答案 1 :(得分:0)
完成上述工作非常简单:
要仅允许正整数,您需要将MaskType设置为Numeric
并使用EditMask ##########;
。 #
的数量表示可能的小部件数量,因此十次#
表示您可以使用十位数字。 (见nempoBu4'答案)
要在控件失去焦点时显示其他,00
,您只需将DisplayFormat设置为FormatType = Numeric
和FormatString = n2
。