- PR -

入力文字の制限

1
投稿者投稿内容
ヒロト
会議室デビュー日: 2003/07/30
投稿数: 6
投稿日時: 2003-08-06 14:26
こんにちは。
現在、C#でWinアプリを作成しているのですが、
数字を入力するためのTextBoxに、KeyPressイベントで数字と「-」記号以外の入力を制限したのですが、「123-」のように入力できてしまい、エラーになってしまいます。
入力する1文字目のみ「-」記号を許可するという方法はあるのでしょうか。

よろしくお願いします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-08-06 15:31
こんにちは。

引用:

ヒロトさんの書き込み (2003-08-06 14:26) より:
入力する1文字目のみ「-」記号を許可するという方法はあるのでしょうか。



方法、というか、「入力する1文字目」=「入力済みの文字列の長さが0(もしくはnull?)」で判定出来ると思います。

makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2003-08-06 15:42
makuraです。

私も以前似たようなことをやりました。(ただしWebで、ですが。)
表示形式が「XXXXX-XXXXX-XX」形式で、Xの部分は英大文字と数字、
ハイフンの直前の文字を入力した時点でハイフンを自動挿入、
ハイフンの直後でバックスペースするとハイフンとその1つ前の文字を削除、
英小文字が入力されたら英大文字に自動変換する、というものでした。
(いや、まだまだありますが

ハイフンの自動入力の処理をやろうとした時に、入力済みの文字長を調べる方法で
試してみたんですが、カーソルを移動して挿入された時にうまくいきませんでした。
結局、JavaScriptでカーソルの位置を取得して、指定された場所にカーソルが
あればハイフンを自動挿入するという処理で対処しました。
Winアプリでもカーソル位置さえ取得できれば同じ方法を使って、先頭以外は−を入力できないようにできるのではないでしょうか。


[ メッセージ編集済み 編集者: makura 編集日時 2003-08-06 15:47 ]
ヒロト
会議室デビュー日: 2003/07/30
投稿数: 6
投稿日時: 2003-08-06 16:24
きくちゃんさん、makuraさん、返信ありがとうございます。

きくちゃんさんの言われた、入力済みの文字列の長さを取得して判定をすることで、無事解決することができました。
どうもありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-06 16:38
こんにちは。

 正規表現関数を使うとできますよ。

System.Text.RegularExpressions.Regex.IsMatch(入力文字列, "(-){0,1}[0-9]+")

-記号が0個か1個でかつ、0〜9の範囲の文字が1個以上の時True

問題:-0がTrueになる。。。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-08-06 18:38
Jittaさん、こんにちは。
引用:

Jittaさんの書き込み (2003-08-06 16:38) より:
問題:-0がTrueになる。。。



TextBox.Text = 数値型.Parse(TextBox.Text).ToString
でカバーするとか。
#だったら最初から、「ParseしてCatchされたらNG」でもいいのか...。
1

スキルアップ/キャリアアップ(JOB@IT)