C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: MaskedTextBoxで半角数字のみ受け付けるには


(過去ログ 12 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■2269 / inTopicNo.1)  MaskedTextBoxで半角数字のみ受け付けるには
  
□投稿者/ 刈歩 菜良 (35回)-(2007/03/29(Thu) 16:57:09)
刈歩 菜良 さんの Web サイト

分類:[C# (Windows)] 

いつもお世話になっております。
かるぼです。

MaskedTextBoxを調査しています。

マスクの設定で数値(5桁)を指定するとマスクに99999が入り数値しか入力できなくなるのですが、なんとおせっかいなことに全角でも受け取ってしまいます。
マスク設定時にValidatingTypeを使用するにチェックをつけているのです、Int32でチェックがかかっているかと思いきや、Exceptionが出るでもなく、入力を受け付けています。

AsciiOnlyプロパティというのがあったので、trueに設定してみましたが、やはり、全角も受け取ります。

ImeModeプロパティをDisableにすると直接全角入力はできなくなりましたが、コピー&ペーストは阻止できませんでした。

そこで疑問ですが、

・MaskedTextBoxの標準機能だけで(つまりノンコーディングまたはMaskedTextBox利用にあたり想定されたコーディングの範囲で)半角のみ受け付けることができるのでしょうか?(カルチャ設定をちこっといじってみてもダメでした)

・マスク設定時のValidatingTypeってMSDN見てみると「ユーザーの入力が有効な値を表すかどうかを検証できます。」とありますが、これはTypeValidationCompletedイベントのイベントハンドらに自分で検証コードか検証結果を処理するコードを書かなきゃいけないということでしょうか?

具体的な業務は想定していないので、MaskedTextBoxで力技なく実現できるか否かがポイントです。

# AsciiOnlyプロパティがあんなら、HankakuOnlyプロパティも欲しいぞぉ!!
# てか、AsciiOnlyなら余計なおせっかいせずに半角だけのAsciiだけを通すか半角に変換するかしてほしいぞぉ!!
引用返信 編集キー/
■2270 / inTopicNo.2)  Re[1]: MaskedTextBoxで半角数字のみ受け付けるには
□投稿者/ 未記入 (55回)-(2007/03/29(Thu) 19:21:55)
No2269 (刈歩 菜良 さん) に返信
> AsciiOnlyプロパティというのがあったので、trueに設定してみましたが、やはり、全角も受け取ります。

え?これ名前どおりの動きをしないんでしょうかね?

> http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.maskedtextbox.asciionly(VS.80).aspx
> コントロールが ASCII 文字セット以外の文字を受け入れるかどうかを示す値を取得または設定します。

ASCII 文字セットじゃないと思うんですけどね・・・ひょっとしてキーしか見ていないのかしら。

解決方法は、継承コントロール行きですかね・・・
引用返信 編集キー/
■2272 / inTopicNo.3)  Re[2]: MaskedTextBoxで半角数字のみ受け付けるには
□投稿者/ ぽぴ王子 (167回)-(2007/03/29(Thu) 19:45:40)
ぽぴ王子 さんの Web サイト
ほかならぬかるぼさんの質問なので、少し調べてみたっちゃ(山口弁)
# 僕の中で流行っているらしい>山口弁

えーとなんというか、VB6の頃からそう思ってたんですが、今すぐ窓から投げ捨てろ!
という感じの…>MaskedTextBox
いやまぁ、投げ捨てなくてもいいですけど(捨てられないし)どうも簡単な感じに
作られてるように見えて、細かいことをしようとすると途端にやる気がなくなる感じの
コントロールなので…個人的にはあまり好きくないです orz

AsciiOnly プロパティは、どうやら Mask に & とか C とかを指定した場合にいろいろ
作用してくれそうな感じのプロパティみたいです。逆に言うとそれ以外は役立たずの
ような感じが…あー窓から今すぐ(ry

最終的な結論は、MaskedTextBox は窓から投げ捨て…じゃなくて、普通の TextBox なんかを
継承して、ごそごそするのが実は一番楽だったというところで落ち着きそうです。

えーと、とりあえずはい。
http://jeanne.wankuma.com/library/

僕も自分で作ったけど、とりあえずじゃんぬ大先生のやつを持ってくるのが手っ取り早いかな
とか思ったり。
引用返信 編集キー/
■2274 / inTopicNo.4)  Re[2]: MaskedTextBoxで半角数字のみ受け付けるには
□投稿者/ 刈歩 菜良 (36回)-(2007/03/29(Thu) 20:02:46)
刈歩 菜良 さんの Web サイト
未記入さん

回答ありがとうございます。

No2270 (未記入 さん) に返信
> ■No2269 (刈歩 菜良 さん) に返信
>>AsciiOnlyプロパティというのがあったので、trueに設定してみましたが、やはり、全角も受け取ります。
>
> え?これ名前どおりの動きをしないんでしょうかね?
>
>>http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.maskedtextbox.asciionly(VS.80).aspx
>>コントロールが ASCII 文字セット以外の文字を受け入れるかどうかを示す値を取得または設定します。
>
> ASCII 文字セットじゃないと思うんですけどね・・・ひょっとしてキーしか見ていないのかしら。
あれ?ここには「ユーザー入力を文字 a 〜 z および A 〜 Z に制限します。」って書いてある。
でも、
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.maskedtextbox(VS.80).aspx
には、「入力を文字セット a 〜 z、A 〜 Z、および 0 〜 9 に制限できます。」って書いてある。
いい加減だなぁ。

いずれにしても、確かにそうなんだけど、全角のa 〜 z、A 〜 Z、0 〜 9も受け取っちゃうのが大問題。
引用返信 編集キー/
■2275 / inTopicNo.5)  Re[3]: MaskedTextBoxで半角数字のみ受け付けるには
□投稿者/ 刈歩 菜良 (37回)-(2007/03/29(Thu) 20:12:50)
刈歩 菜良 さんの Web サイト
ぽぴ玉子

No2272 (ぽぴ王子 さん) に返信
> ほかならぬかるぼさんの質問なので、少し調べてみたっちゃ(山口弁)
> # 僕の中で流行っているらしい>山口弁
ヾ(>y<;)ノ感激して目が開けられないよぉ。
# と、思ったら、今日は花粉がすごいだけだった。(^Q^)

> えーとなんというか、VB6の頃からそう思ってたんですが、今すぐ窓から投げ捨てろ!
> という感じの…>MaskedTextBox
> いやまぁ、投げ捨てなくてもいいですけど(捨てられないし)どうも簡単な感じに
> 作られてるように見えて、細かいことをしようとすると途端にやる気がなくなる感じの
> コントロールなので…個人的にはあまり好きくないです orz
あ、やっぱそうなんや...

> AsciiOnly プロパティは、どうやら Mask に & とか C とかを指定した場合にいろいろ
> 作用してくれそうな感じのプロパティみたいです。逆に言うとそれ以外は役立たずの
> ような感じが…あー窓から今すぐ(ry
あ、ほんとだ、そっちのページは確認してませんでした。

> 最終的な結論は、MaskedTextBox は窓から投げ捨て…じゃなくて、普通の TextBox なんかを
> 継承して、ごそごそするのが実は一番楽だったというところで落ち着きそうです。
やっぱそっかぁ。
やっぱそんなのは講習で教えるべきではないんかなぁ。

> えーと、とりあえずはい。
> http://jeanne.wankuma.com/library/
ありがとう!!
自分で使うことがあったらこれお借りしよっと。

# 3月〜7月は業界的に超繁忙期であんまり回答にまわれなくってご免ちゃい。> All
引用返信 編集キー/
■2277 / inTopicNo.6)  Re[3]: MaskedTextBoxで半角数字のみ受け付けるには
□投稿者/ 中博俊 (1001回)-(2007/03/29(Thu) 20:29:26)
中博俊 さんの Web サイト
全角であっても数字なんだから受け取れるようにするべきです。
#べき論

どうせコピペなんかもあるので、チェックするというかInt32で取り出せるかどうかを基準にするべきです。
#べき論

深い話は4月勉強会で(^^
引用返信 編集キー/
■2279 / inTopicNo.7)  Re[4]: MaskedTextBoxで半角数字のみ受け付けるには
□投稿者/ 刈歩 菜良 (38回)-(2007/03/29(Thu) 22:38:04)
刈歩 菜良 さんの Web サイト
中さん

No2277 (中博俊 さん) に返信
> 全角であっても数字なんだから受け取れるようにするべきです。
> #べき論
うん、これはわかる。

> どうせコピペなんかもあるので、チェックするというかInt32で取り出せるかどうかを基準にするべきです。
> #べき論
そう、ここここ、ValidatingTypeが何やってくれるかいまいちわからないんですが。ValidatingTypeがInt32なんだから、例外発するなり、Int32以外は受け取らんなりしてほしいなぁと思うのですよ。
だって、あのマスク設定の画面だと多くの人がそんな期待をすると思うのですよねぇ。

> 深い話は4月勉強会で(^^
あ〜い。
(^o^)/
引用返信 編集キー/
■2287 / inTopicNo.8)  Re[5]: MaskedTextBoxで半角数字のみ受け付けるには
□投稿者/ はつね (114回)-(2007/03/30(Fri) 02:22:23)
はつね さんの Web サイト
No2279 (刈歩 菜良 さん) に返信
> だって、あのマスク設定の画面だと多くの人がそんな期待をすると思うのですよねぇ。

全角の99999だったら全角のみで、半角の99999だったら半角のみで入力制限してほしーなーというところでしょうか。

# 全角数字を入力時に強制的に半角数字にしちゃうってのはやったことがあるな〜

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -