0

インフラジスティックス UltraNumericEditor を使用し.MaxValueて 50 に設定すると、コントロールは制限よりも大きい小数を入力できるようになります (たとえば、50.99)。

プロパティを 50.01に設定すると、同じ動作が見.MaxValueられます (より大きな値を設定できます) 。

私は明らかにコードでこれを解決できますが、値をリセットしますが、コントロールはこれを独自に行う必要があるようです。

これらのプロパティを正しく使用する方法に欠けているものはありますか?

4

2 に答える 2

2

プロパティStyleをDecimal(またはDouble)に設定してUltraNumericEditorを使用していると思います。
この場合、コントロールを使用すると、プロパティMaxValueに関して入力を無効にする数字を挿入できます。ただし、デフォルトでは、値が正しくなるまでコントロールを終了することはできません。必要に応じて、ValidationErrorEventArgsパラメーターを指定する
イベントValidationErrorを使用できます。このパラメーターには、間違った値をリセットするための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");
}
于 2012-09-20T21:34:44.727 に答える
1

問題は、IEditorDataFilterパーセンテージ値の結果でした。

Infragistics は、IEditorDataFilter小数のパーセンテージ (.5 = 50%) をパーセンテージに変換して表示する を推奨しており、私も実装しました。

このフィルターは、コントロールの検証が行われる前に適用されます。したがって、MaxValueを「50」に設定すると、「50.99」を入力できましたが、「51」は入力できませんでした...通常、これはスティーブの回答によると検証エラーを引き起こします。ただし、IEditorDataFilterこのコントロールに が適用されているため、値は自動的に .5099 に変換され、この新しい値は制約に違反していません。

私が実装した解決策は、イベントの値をチェックしValidatedて / 100 より大きいかどうかを確認し、大きい場合MaxValueは同じ値に設定することでした。

于 2012-10-01T15:38:42.037 に答える