投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/6/8 10:11:07
ちょっと気になったので、masaX さんのコードについて追加検証してみました。
コントロールパネルの地域設定に依存する部分もありますが:

(a)「1234」  が 1234 に解釈され、4文字扱いになる。(全角文字)
(b)「+5555」     が 5555 に解釈され、4文字扱いになる。(正の符号の先導)
(c)「-987」      が -987 に解釈され、4文字扱いになる。(負の符号の先導)
(d)「(275)」     が -275 に解釈され、4文字扱いになる。(丸括弧による負数表記)
(e)「9753.10」   が 9753 に解釈され、4文字扱いになる。(小数表記)
(f)「1.3579E3」  が 1358 に解釈され、4文字扱いになる。(正数となる指数表記)
(g)「-333333E-3」が -333 に解釈され、4文字扱いになる。(負数となる指数表記)
(h)「&H9A4」     が 2468 に解釈され、4文字扱いになる。(16進数表記)
(i)「&o1750」    が 1000 に解釈され、4文字扱いになる。(8進数表記)
(j)「1,2,34,.56」が 1235 に解釈され、4文字扱いになる。(桁区切り記号)
(k)「\1,234」    が 1234 に解釈され、4文字扱いになる。(通貨記号)
(l)「  5432  」  が 5432 に解釈され、4文字扱いになる。(先導空白あるいは後続空白)
(m)「&H80000000」が 2147483648 に解釈され、CInt 時に OverflowException の例外が発生する。
(n)「-∞」       が Double.NegativeInfinity に解釈され、CInt 時に OverflowException の例外が発生する。


ここまでにあった回答以外の手段として、他にも
 ・正規表現を使った判定方法
 ・Like 演算子を使った判定方法
 ・Integer.TryParse を使った上で変換後の値の大小を調べる方法
 ・MaskedTextBox コントロールを使った入力検査
など、いろいろな方法が考えられます。

処理タイミングについても、キー入力時(KeyPress 等)、テキスト変更時(TextChanged 等)、
入力検証時(Validating 等)、ボタンクリック時(Click 等)と様々ですし、時には、
これらを組み合わせてチェックすることもあります。

「4 桁の数値を得られれば、入力文字列の形式にはこだわらない」のか、
「4 桁の数字(≠数値)で構成された文字列であることを期待する」のか、
最終的に求める処理にあわせて使い分けてみてください。