使用Infragistics的UltraNumericEditor,如果我设置了.MaxValue
50,控制系统将允许我进入比限制的小数(例如,50.99)UltraNumericEditor允许值大于MaxValue的设置
我看到同样的行为,如果大我将.MaxValue
属性设置为50.01(可以设置更大的值)
我明显可以在代码中解决此问题,但重置了值,但似乎控件应该自行完成此操作。
有什么我错过了如何正确使用这些属性?
使用Infragistics的UltraNumericEditor,如果我设置了.MaxValue
50,控制系统将允许我进入比限制的小数(例如,50.99)UltraNumericEditor允许值大于MaxValue的设置
我看到同样的行为,如果大我将.MaxValue
属性设置为50.01(可以设置更大的值)
我明显可以在代码中解决此问题,但重置了值,但似乎控件应该自行完成此操作。
有什么我错过了如何正确使用这些属性?
问题是IEditorDataFilter
对的结果百分比值。
Infragistics建议,我已经实施了IEditorDataFilter
,它将十进制百分比(.5 = 50%)转换为显示的百分比。
此过滤器在控件验证发生之前应用。因此,将MaxValue
设置为“50”允许我输入“50.99”,但不是“51”......通常这会导致验证错误,按照史蒂夫的回答。但是,由于IEditorDataFilter
应用于此控件,该值自动转换为.5099,并且此新值不违反约束。
我实施的解决方案是检查Validated
事件中的值,看它是否大于MaxValue
/100,如果是,则将它设置为相同。
我想你使用的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");
}
没有验证错误发生,代码进入'Validated'事件,携带错误的值。 – Matthew
这很奇怪。你有没有改变其他属性? Infragistics套件使用哪个版本? – Steve
我想我已经绊倒了我的答案......这代表了一个百分比,我正在使用'IEditorDataFilter'将用户输入除以100.该控件的输入被屏蔽以允许我输入50.xx,但在'Validation'事件中,数据过滤器已经生效,所以.50xx不会违反'MaxValue'约束! – Matthew