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はストレスフルだったり入力者側のミスが出そうでしんどそう。しんどそう…