- PR -

MaskedTextBoxについて(VB2005)

投稿者投稿内容
えり
常連さん
会議室デビュー日: 2007/04/27
投稿数: 29
投稿日時: 2007-07-13 14:35
こんにちは。
VB2005のMaskedTextBoxについてお聞きしたいことがあります。
入力で、数字とピリオドのみ入力可にすることはできないでしょうか。
入力例でいうと、
1.3.6.10や、
1.4.8.15.18.20
のように入れれるようにしたいです。
よろしくお願いします。
ガルマ・ザビ
ベテラン
会議室デビュー日: 2007/06/07
投稿数: 55
お住まい・勤務地: ジオン公国
投稿日時: 2007-07-13 16:22
KeyPressイベントの中で、数字、ピリオド、BackSpaceだけどフックして、
それ以外は、強制的に e.Handle = True としてしまえばよいかと。

該当のMaskedTextBoxを使いまわすなら、継承先に処理を埋め込んだ方がいいですね。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-07-13 16:41
引用:

ガルマ・ザビさんの書き込み (2007-07-13 16:22) より:

KeyPressイベントの中で、数字、ピリオド、BackSpaceだけどフックして、
それ以外は、強制的に e.Handle = True としてしまえばよいかと。


そしてペーストで全角文字とか入れられてしまって、入力値を信用して登
録してるもんだから変なデータが入って後から慌てる罠。

やるなら継承したコントロールの WndProc プロシージャでやるのが一般
的かもしれないですね。
MaskEdit だと、ちょっと用途と合わないかもしれないです。

ということでじゃんぬねっとさんのところの参考資料をどうぞ。
http://jeanne.wankuma.com/tips/textbox/permitchars.html
# 以前自分も似たようなの作ってました

この辺とかを読んでみるといいかもです。
> だからといって 入力チェックをしなくても良いわけではない です。
> そういう意味でも、「最終チェックに一任する」という選択肢があることも忘れないでください。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
ガルマ・ザビ
ベテラン
会議室デビュー日: 2007/06/07
投稿数: 55
お住まい・勤務地: ジオン公国
投稿日時: 2007-07-13 16:51
引用:

ぽぴ王子さんの書き込み (2007-07-13 16:41) より:

[そしてペーストで全角文字とか入れられてしまって、入力値を信用して登
録してるもんだから変なデータが入って後から慌てる罠。




おっ。。確かにそうでした。
自分なら、PasteだけをWndProc でフックするかなぁ。。
えり
常連さん
会議室デビュー日: 2007/04/27
投稿数: 29
投稿日時: 2007-07-13 16:52
ありがとうございます。
>ということでじゃんぬねっとさんのところの参考資料をどうぞ。
>http://jeanne.wankuma.com/tips/textbox/permitchars.html
まさに探していたもののサンプルです。

このサンプルの中で、
Me.MyTextBox1.PermitChars = New Char() {"0"c, "1"c, "2"c, "3"c, "4"c, "5"c};
といのがあるのですが、
この"0"cのcとは何を意味する構文なのでしょうか。


おっしゃるとおり、
MaskTextBoxは、日付や郵便番号といったものの入力には向いてますが、
私の用途では、向いていないですね。
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2007-07-13 18:14
引用:

この"0"cのcとは何を意味する構文なのでしょうか。


新規FormにTextBoxと上記コーディングを貼り、cを除外してみれば判るんじゃないかな。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-13 18:14
引用:

ガルマ・ザビさんの書き込み (2007-07-13 16:51) より:

おっ。。確かにそうでした。
自分なら、PasteだけをWndProc でフックするかなぁ。。


ご存知だとは思いますが、それでも安全とは言えないです。

引用:

えりさんの書き込み (2007-07-13 16:52) より:

このサンプルの中で、
Me.MyTextBox1.PermitChars = New Char() {"0"c, "1"c, "2"c, "3"c, "4"c, "5"c};
といのがあるのですが、この"0"cのcとは何を意味する構文なのでしょうか。


System.Char 型を表します。 この場合ですと Char の定数ですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-13 18:18
あ、まるくさん。 邪魔なマネをしてしまいました。 すみません。

引用:

えりさんの書き込み (2007-07-13 16:52) より:

おっしゃるとおり、MaskTextBoxは、日付や郵便番号といったものの入力には向いてますが、私の用途では、向いていないですね。


MaskedTextBox コントロールは定型入力を支援するものですが、入力制限に関してはそこまで融通が利かないかもしれませんね。 InputMan など専用のコントロールの利用が望ましいとは思いますが、キーが効かないことが必ずしもユーザーに配慮した対策ではないという可能性も考えた方が良いかもしれません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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