使用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