NumericUpDownコントロールは数値を扱うときに便利ですが、初期状態ではMaximum = 100、Minimum = 0となっています。なにか値を表示させるときにこれを超えてしまうと例外発生となります。

こんなプログラムを書くと例外が発生します。

上限下限が決まっている値を設定したいときには便利ですが、取得した値を表示する場合は使いにくいので自作してみます。

簡単な説明

NumericUpDownコントロールのValueプロパティはdecimal型(int型やlong型よりも大きな値を扱うことができる)のですが、これまでNumericUpDownコントロールを使ってきた経験上、int型で十分であると思います。取得した値をint型にキャストするのが面倒なので、int型で設定できるようにします。

Valueプロパティ

Maximumプロパティで設定されている値よりも大きな値やMinimumプロパティで設定されている値よりも小さな値をValueプロパティにセットしようとした場合はそのつどMaximumプロパティとMinimumプロパティに設定されている値を変更しています。

TextChangedイベント

NumericUpDownコントロールに直接値を入力したときにMaximumプロパティとMinimumプロパティに設定されている値の範囲内でないと値が有効になりませんが、これも対応できるようにします。

NumericUpDownコントロールには Text プロパティという非表示なプロパティがあります。またTextChanged イベントもあります。TextChangedイベントのあとテキストボックスの値が適切なものであればValueChangedイベントも発生します。

使用例

[サイズ取得]をクリックするとフォームのサイズを取得することができます。NumericUpDownコントロールの値を変更して[サイズ変更]をクリックするとフォームが指定されたサイズに変更されます。ただ10000のような極端に大きな値にしてもフォームの大きさには上限があるため、どこまでも大きなサイズに変更することはできません。