2012-09-20 61 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

相關問題