- - PR -
テキストボックスに数字を入力する際の制御
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-10 17:10
デバッグをした際、テキストボックスへ表示する数字を整数は2桁まで、小数点以下は6桁までと制御したいのですが、プロパティのMaxLengthとは違うと思われますが、方法がわかりません。
ご助力願います。 使用している言語はC#です。 | ||||||||
|
投稿日時: 2004-05-10 18:13
テストしていないので、うまくいくかどうかはわかりませんが、
Validatingイベントのハンドラ内で、整数の文字数、小数点下の文字数を調べ、オーバーしていたら、キャンセルするというのはいかがでしょうか。 | ||||||||
|
投稿日時: 2004-05-10 18:34
もっと良い方法があるかもしれませんが参考までに。
文字列の長さでの制限のサンプルがこちらに書いてあります。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10370&forum=7 これの条件を変えるだけでいけると思います。 テキストが変更された場合に、条件を満たす文字列になるまでカーソルの前の文字を1文字ずつ消していけば良いと思います。 | ||||||||
|
投稿日時: 2004-05-10 19:16
返信ありがとうございます。
試させて頂きます。
| ||||||||
|
投稿日時: 2004-05-10 20:49
諸農です。
Regexクラスを使った方法を考えました。
正規表現そのものの詳細についてはドキュメントやサイトなどを参考にしてください。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-05-11 10:51
初心者なので分からない部分があってすみませんが・・・
整数2桁はどこで制御すればよろしいのでしょうか?
Regexクラスを使った方法を考えました。
正規表現そのものの詳細についてはドキュメントやサイトなどを参考にしてください。 [/quote] | ||||||||
|
投稿日時: 2004-05-11 11:44
諸農です。
テキストボックスに入力された情報をチェックする、 という前提でいいですか? であれば、
このような感じでチェックが可能でしょう。 チェックをValidatingイベントで行うのであれば、 MessageBoxの代わりにErrorProviderクラスで通知してもいいと思います。 --補足-- 正規表現は、私もまだ始めたばかりでパフォーマンスの良いが 書けないのですが(^_^;) "^d{1,2}.d{1,6}$|^d{1,2}$" この正規表現の「|」の前半部分で「00.0」〜「00.000000」までを 判定しており、後半部分では「00」を判定しています。 「|」はORの意味です。 「^」と「$」は行頭、行末を意味しています。 「{,}」は最小値と最大値をあらわしています。 「d」は数値を意味しており、これは[0-9]で置き換えることが可能です。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-05-11 12:03
new Regex(@"^d{1,2}.d{1,6}$|^d{1,2}$"); のうち、 ^ … 「文字列の最初」を表す $ … 「文字列の最後」を表す つまり、"^なんたらかんたら$"とすると、「なんたらかんたら」という入力文字列そのものに一致する。ついていないと、「なんたらかんたら」を含む文字列に一致する。 | … 検索対象のor演算、つまり、この記号の左か右に一致するもの d … 十進表記の数値 {1,2} … 1つまたは2つ つまり、"d{1,2}"で、「十進数1桁または2桁」、 "d{1,2}.d{1,6}"で、「十進数1桁または2桁、続いて小数点、続いて十進数1桁から6桁」となり、「十進数で2桁の整数部と6桁までの小数部」を表す。 "d{1,2}.d{1,6}|d{1,2}"で、「十進数で1〜2桁の整数部と1〜6桁までの小数部、または、十進数で1〜2桁の整数」を含んでいる文字列が対象となる。これに^と$を付けて"^d{1,2}.d{1,6}$|^d{1,2}$"とすることで、「十進数で1〜2桁の整数部と1〜6桁までの小数部、または、十進数で1〜2桁の整数」である文字列が対象となる。 「(スペース)1」ははじかれるし、「00.00」は通るので、こういう例外的な要素は別に定義する必要があります。 たとえば、trimした文字列を検査対象とすることで「(スペース)1」などを通すことができます。いったんこの正規表現にマッチすると「floatに変換可能」であることが保証されるので、floatに変換後、ToStringを通すことで「00.00」などの冗長なゼロ表現を検査することができます。 符号がつくかもしれない場合は、"^[-+]?d{1,2}.d{1,6}$|^[-+]?d{1,2}$" 参照するMSDNのキーワード(キーワードタブの「検索する文字列」に入力): 「正規表現, 代替構成体」 「正規表現, 文字クラス」 「正規表現, 量指定子」 「正規表現, アトミック ゼロ幅アサーション」 |
1|2|3
次のページへ»