- - PR -
入力文字の制限
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-06 14:26
こんにちは。
現在、C#でWinアプリを作成しているのですが、 数字を入力するためのTextBoxに、KeyPressイベントで数字と「-」記号以外の入力を制限したのですが、「123-」のように入力できてしまい、エラーになってしまいます。 入力する1文字目のみ「-」記号を許可するという方法はあるのでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2003-08-06 15:31
こんにちは。
方法、というか、「入力する1文字目」=「入力済みの文字列の長さが0(もしくはnull?)」で判定出来ると思います。 | ||||
|
投稿日時: 2003-08-06 15:42
makuraです。
私も以前似たようなことをやりました。(ただしWebで、ですが。) 表示形式が「XXXXX-XXXXX-XX」形式で、Xの部分は英大文字と数字、 ハイフンの直前の文字を入力した時点でハイフンを自動挿入、 ハイフンの直後でバックスペースするとハイフンとその1つ前の文字を削除、 英小文字が入力されたら英大文字に自動変換する、というものでした。 (いや、まだまだありますが ) ハイフンの自動入力の処理をやろうとした時に、入力済みの文字長を調べる方法で 試してみたんですが、カーソルを移動して挿入された時にうまくいきませんでした。 結局、JavaScriptでカーソルの位置を取得して、指定された場所にカーソルが あればハイフンを自動挿入するという処理で対処しました。 Winアプリでもカーソル位置さえ取得できれば同じ方法を使って、先頭以外は−を入力できないようにできるのではないでしょうか。 [ メッセージ編集済み 編集者: makura 編集日時 2003-08-06 15:47 ] | ||||
|
投稿日時: 2003-08-06 16:24
きくちゃんさん、makuraさん、返信ありがとうございます。
きくちゃんさんの言われた、入力済みの文字列の長さを取得して判定をすることで、無事解決することができました。 どうもありがとうございました。 | ||||
|
投稿日時: 2003-08-06 16:38
こんにちは。
正規表現関数を使うとできますよ。 System.Text.RegularExpressions.Regex.IsMatch(入力文字列, "(-){0,1}[0-9]+") -記号が0個か1個でかつ、0〜9の範囲の文字が1個以上の時True 問題:-0がTrueになる。。。 | ||||
|
投稿日時: 2003-08-06 18:38
Jittaさん、こんにちは。
TextBox.Text = 数値型.Parse(TextBox.Text).ToString でカバーするとか。 #だったら最初から、「ParseしてCatchされたらNG」でもいいのか...。 |
1