2012-09-20 58 views
0

使用Infragistics的UltraNumericEditor,如果我设置了.MaxValue 50,控制系统将允许我进入比限制的小数(例如,50.99)UltraNumericEditor允许值大于MaxValue的设置

我看到同样的行为,如果大我将.MaxValue属性设置为50.01(可以设置更大的值)

我明显可以在代码中解决此问题,但重置了值,但似乎控件应该自行完成此操作。

有什么我错过了如何正确使用这些属性?

回答

1

问题是IEditorDataFilter对的结果百分比值。

Infragistics建议,我已经实施了IEditorDataFilter,它将十进制百分比(.5 = 50%)转换为显示的百分比。

此过滤器在控件验证发生之前应用。因此,将MaxValue设置为“50”允许我输入“50.99”,但不是“51”......通常这会导致验证错误,按照史蒂夫的回答。但是,由于IEditorDataFilter应用于此控件,该值自动转换为.5099,并且此新值不违反约束。

我实施的解决方案是检查Validated事件中的值,看它是否大于MaxValue/100,如果是,则将它设置为相同。

2

我想你使用的UltraNumericEditor属性风格设置为十进制(或双)。
在这种情况下,该控件允许您插入呈现输入无效的数字,以关于属性MaxValue。但是,默认情况下,您无法退出该控件,直到该值正确。
如果需要,可以使用事件ValidationError,它提供了ValidationErrorEventArgs参数。该参数包含LastValidValue属性重置错误的值,则RetainFocus让你的用户退出了编辑器(或者,如果你愿意,显示错误消息)

private void ultraNumericEditor1_ValidationError(object sender, ValidationErrorEventArgs e) 
{ 
    // Reset the content to the last valid value and allow the exit from the editor 
    ultraNumericEditor1.Value = e.LastValidValue; 
    e.RetainFocus = false; 


    // In alternative display a message, but leave the wrong value to be reedited 
    // DisplayValidationMessage("The max value allowed is 50.00"); 
} 
+0

没有验证错误发生,代码进入'Validated'事件,携带错误的值。 – Matthew

+0

这很奇怪。你有没有改变其他属性? Infragistics套件使用哪个版本? – Steve

+0

我想我已经绊倒了我的答案......这代表了一个百分比,我正在使用'IEditorDataFilter'将用户输入除以100.该控件的输入被屏蔽以允许我输入50.xx,但在'Validation'事件中,数据过滤器已经生效,所以.50xx不会违反'MaxValue'约束! – Matthew

相关问题