• ベストアンサー

テキストボックスの入力制限

VB2005環境です。 ・全角文字のみ入力を受け付けるテキストボックス ・半角文字のみ入力を受け付けるテキストボックス 以上のような入力制限を持つコントロールを用意したいと思っています。 MaskedTextBoxを用いればできるかと思いましたが、それらしき プロパティが見当たりませんでした。 やはりキーイベントを取得して…ということになるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんな感じでどうでしょうか? (あまり検証してませんが。) 半角のみ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

noname#32335
質問者

お礼

大変参考になりました。 流用させていただいて、目的の動作にすることができました。 ありがとうございました。

その他の回答 (3)

回答No.4

すみません。 半角のみOKの場合 ... Handles TextBox2.KeyPress ↓ 半角のみOKの場合 ... Handles TextBox1.KeyPress に訂正させてください。

  • akieica
  • ベストアンサー率0% (0/3)
回答No.2

はい、ケージングは大文字小文字です、で、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で全角。 というような強制変換をかぶせるとかですかね。。。

noname#32335
質問者

お礼

なるほど、IMEのほうで制御させるんですね。 よくわかりました、ありがとうござます。

  • akieica
  • ベストアンサー率0% (0/3)
回答No.1

テキストボックスのプロパティにCharacterCasingというものがあります。 こちらで設定できませんか? IMEコントロール設定とあわせて使えば望みの結果になるとおもいます。

noname#32335
質問者

お礼

CharacterCasingは大文字・小文字の区別をつけるものだと 理解していたのですが、全角・半角についても使えるのでしょうか? 試してみましたが、設定できませんでした。

関連するQ&A

専門家に質問してみよう