• ベストアンサー

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

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

noname#32335
noname#32335

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

  • ベストアンサー
回答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

  • VB.net、テキストボックス入力制限、全角のみ

    VB.net初心者ですよろしくお願いします テキストボックス入力制限で全角文字のみを以下の方法で実現させました (1)テキストボックス選択時のImeMode初期値を全角ひらがなに設定 (2)ボタン押下時のイベントで入力された文字のサイズを確認し、半角が混ざっていたらエラー これで基本的には問題ないのですが、後学のために入力文字自体を全角のみに制限できないかを調べています いろいろ調査してみて半角のみは可能であることがわかり、実際にコーディングもしてみました しかし全角のみは調査しても情報が見つかりません 全角のみの入力制限が可能かどうか、理由も添えてアドバイスいただけると助かります よろしくお願いします。

  • テキストBOXの入力制限について

    テキストBOXを下記のように設定したとします。 <input type="text"name="***" maxlength="30"> この場合は、全角・半角関係なく文字数を30文字入力することができますよね? 今回、私がやりたいことは、バイト数の制限をやりたいんです。 例えばバイト数を30バイトにした場合は、 全角では15文字しか入力できなくて 半角では30文字入力制限をする方法を探しています。 何かよい方法はないものでしょうか???

  • c♯テキストボックスの半角カナのみの入力

    こんばんは、現在Visual Studio2013でC♯用いてコードを書いています。 そこで困ったことがあるのですが、テキストボックスの入力文字制限で半角カナだけにしたく、コントロールのImeModeプロパティをKatakanaHalfにしたのですが、全角文字も入力出来てしまいます。 ImeModeプロパティのみの変更で半角カナだけの入力が可能だと思ったのですが、他にもプロパティ値を変更する必要はあるのでしょうか?

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

     VB6の画面入力でテキストボックスにフォーカスが移った際、半角カナや全角漢字、半角アルファベット大文字と云ったキーボードからの入力を制御したい(OSはWinXp/FEPはIME2002を使用)のですが、良い方法が有れば教えてください。

  • VB.net テキストボックスの入力制限全角のみ

    VB.net初心者です テキストボックスの入力制限で全角文字のみを実現させたいのですが、いろいろ検索して調査してもわかりません。 どなたかアドバイスをいただけると助かります、よろしくお願いします。

  • テキストボックスの入力文字を16進数のみに制限する

    VC++2005、.NET2.0、C++/CLIにてWindowsアプリを作成しています。 テキストボックスの入力文字について、 「00」~「FF」の16進数文字(半角)のみ入力可能としたいのですが、 どうやって制限をかければ良いのでしょうか? また、もし16進数のみの制限が不可能であれば、 半角英数字のみの制限でも良いと考えています。

  • テキストボックスへの文字の入力について

    テキストボックスに入力できる文字を半角文字は最大30字、全角文字は最大15字に設定したいのですがどのようにすればできるのでしょうか?知っている方教えてください。

  • VB2005 テキストボックスの最大入力値設定について

    いつもお世話になっております。 VB2005のテキストボックスで、全角半角入り混じっての 最大30バイトまで入力可能にしたいのですが、現在ある MaxLengthプロパティではうまく制御ができません。 テキストのロストフォーカスや、チェンジイベント時に チェックする以外に方法はないのでしょうか。 何かもっといい方法があれば教えて頂きたいのですが・・・。 どうか宜しくお願いいたします。

  • フォームのテキストボックス内での処理

    ●VB6.0を使用しているのですが、テキストボックスで全角スペースのみ又は半角スペースのみの入力をした時msgboxでエラー処理するにはどうしたらいいのでしょうか? ●またテキストボックスで半角英数しか入力できないようにする処理があれば教えていただけますか?

  • テキストボックス行の桁数を制限したいです VB.NET

    VB.NETのテキストボックスなのですが、 マルチラインのテキストボックスで 行の桁数を10桁などに制限したいです。 全角半角混在などの処理もしないとならないと思うのですが、 良い方法などありましたらアドバイス頂ければ幸いです。 よろしくお願い致します。

専門家に質問してみよう