Make the validation against Min/Max value optional as well as the replacing the typed value with the min/max if the typed value is outside of the allowed range.
Currently, the NumericUpDown supports the following two options:
1) The Min/Max possible values are set on the NumericUpDown. This has quite dangerous issue. If the user focus the control, write 4 and press Enter (or click on the OK button), the value is silently and without any warning changed to 100000 and committed.
2) No Min/Max is set on the NumericUpDown. Here, the up/down buttons does not help so much as in the first case. The first up key press sets the value to 1 which is invalid rather than to the first valid value (100000). Almost no-one would like to press 100000 times the Up button to reach the first valid value (I know there is a Page Up button as well but this requires somehow advanced user which know in advance about this feature and it might block other meaningful usage of the Page Up feature).
I would like to see a combination of the two. The NumericUpDown has the Min/Max set but it does not alter the value automatically if not valid.
Examples of the requested behavior:
Scenario 1. The value is null. User presses Up button. The value is set to 100000.
Scenario 2. User enters 4 which is forwarded to the underlying model. User commits the form. The Range(100000, 999999) results in a validation error on the DataForm and the commit is cancelled.
Scenario 3. User enters 4. User presses Up button. Here, there are two possibilities I do not have clear winner up to now. a) The first valid value is set (100000). Cons is that the user might expect change to 5 and does not notice that the value changed to 100000. b) The value is normally incremented to 5, i.e. to an invalid value.