- ベストアンサー
テキストボックスの入力制限
VB2005環境です。 ・全角文字のみ入力を受け付けるテキストボックス ・半角文字のみ入力を受け付けるテキストボックス 以上のような入力制限を持つコントロールを用意したいと思っています。 MaskedTextBoxを用いればできるかと思いましたが、それらしき プロパティが見当たりませんでした。 やはりキーイベントを取得して…ということになるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょうか? (あまり検証してませんが。) 半角のみOKの場合 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If (AscW(e.KeyChar) < &H100) Then e.KeyChar = ChrW(0) End If End Sub 全角のみOKの場合 Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If (AscW(e.KeyChar) >= &H100) Then e.KeyChar = ChrW(0) End If End Sub
その他の回答 (3)
- tsukasa-12r
- ベストアンサー率65% (358/549)
すみません。 半角のみOKの場合 ... Handles TextBox2.KeyPress ↓ 半角のみOKの場合 ... Handles TextBox1.KeyPress に訂正させてください。
- akieica
- ベストアンサー率0% (0/3)
はい、ケージングは大文字小文字です、で、ImeModeというプロパティでAlphaFullにすると全角英字、alphaにすると半角英字でIMEが立ち上がります。で、DISABLEにするとIMEが不可になるので、半角英字のみになります。 もう一つのやり方としては、 validatingイベントにてsenderにたいして Dim ctlValue As TextBox = CType(sender, TextBox) ctlValue.Text = StrConv(ctlValue.Text.ToUpper, VbStrConv.Narrow) Narrowで 半角。WIDEで全角。 というような強制変換をかぶせるとかですかね。。。
お礼
なるほど、IMEのほうで制御させるんですね。 よくわかりました、ありがとうござます。
- akieica
- ベストアンサー率0% (0/3)
テキストボックスのプロパティにCharacterCasingというものがあります。 こちらで設定できませんか? IMEコントロール設定とあわせて使えば望みの結果になるとおもいます。
お礼
CharacterCasingは大文字・小文字の区別をつけるものだと 理解していたのですが、全角・半角についても使えるのでしょうか? 試してみましたが、設定できませんでした。
お礼
大変参考になりました。 流用させていただいて、目的の動作にすることができました。 ありがとうございました。