しらいしさん…

linuxに1000回くらい殺されてるしとりまmicrosoft様をageてくわ

TextBoxに数字しか入力できないようにしたい

タイトル通りの事をふんわりとやりたいと考えて、

参照

以下がヒットしました。 TextBoxに数字しか入力できないようにする: .NET Tips: C#, VB.NET

やるべきこと

各コントロールのKeyPressイベントに

 //数字以外(スペース含む)のとき
 if (!Char.IsDigit(e.KeyChar) && e.KeyChar != '\b')
  {
    //イベントを強制終了
    e.handled = true
  }

を入れる。
※必要なコントロール一個一個に対し同じ処理をするので、共通部品メソッドとして別だししたほうがよい

脳死しかける

Q.「tryParse使えばいいんじゃ?
A.「使えませんtryParseはstringにしか使えないしkeyPressのKeyEventArgsがstringを扱うことはほぼ確実にないからです」

入力内容が文字列として判定可能なのはコントロールのtext値として設定された後なんだね。
あと、e.handledもkey系のイベントでしか使えないぞ。

tryPerseが使えるパターン

目的を具体化して、

記入に誤りがあった場合、
1. 入力確定ボタンを押した際にtryPerseしてエラーを出す
2. フォーカスを変えた際にtryPerseしてエラーを出すorデフォルト値を入れる
であればある程度活用のめどがありそう。
ただし、1はボタンメソッドに複数コントロールのtextを全部持ってくる必要がありそうなのと、2はストレスフルだったり入力者側のミスが出そうでしんどそう。しんどそう…