• ベストアンサー

VB.NET2003 テキストボックスに半角英数字以外入力させない

お世話になります。 初めてコーディングを行っておりますが、 文字制御についてわからないのでご享受ください。 IMEの設定 Alphaになっているテキストボックスがあります。 こちらに、直接入力や、貼り付けなどで、 全角文字、半角カナが入力されないようにするにはどうしたらよろしいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ImeModeはOffの方がいいように思います キー入力に関しては TextBoxのKeyDownイベントで if e.KeyCode = Keys.ProcessKey then   e.Handled = true   TextBox1.ImeMode = ImeMode.Off else if e.Keycode = Key.Insert then   ' キーボードによる貼り付け操作   if e.shift then     e.Handled = true   end if End if といった具合で処理出来そうです マウスの右クリックのコンテキストメニューの対策は ContextMenuをFormに貼り付けてメニュー項目は何も設定しません Form_Loadイベントなどで TextBox1.ContextMenu = ContextMenu1 といった具合に設定します …

happydonky
質問者

お礼

返事遅れましたが、なんとか実行できました。 ありがとうございました。

その他の回答 (2)

回答No.3

No.2です。 すみません、書いてから気が付いたんですが、 キャレットを後端に移動している部分は、文字列の途中に文字を差し込もうとした時にマズイですね(汗) その辺は、適当にアレンジお願いします。

happydonky
質問者

お礼

返事遅れましたが、なんとか実行できました。 大変参考になりました。ありがとうございました。

回答No.2

当方、VS2005で確認しました。同じだとは思いますがご了承ください。 まず、IMEModeはDisableがいいと思います。Offだと起動できるので。 で、あまりうまい方法では ないかもしれませんが、以下のような感じで 一応いけるはずです。 以下では、入力(貼り付け)されて指定以外の文字があったら、入力(貼り付け)直前の状態に戻します。 ----- Public Class Form1 Private prevText As String = "" '変更前テキスト保存用 Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If TextBox1.TextLength > 0 Then '何か入力されていたら処理 For i As Integer = 0 To TextBox1.TextLength - 1 Select Case Asc(TextBox1.Text.Substring(i, 1)) '1文字ずつ文字コードチェック Case 48 To 57, 65 To 90, 97 To 122 '半角数値、アルファベット大文字・小文字なら何もしない Case Else '上記以外なら、直前に憶えていたテキストに戻してチェック終了 TextBox1.Text = prevText Exit For End Select Next End If TextBox1.Select(TextBox1.TextLength, 0) 'キャレットをテキスト後端に prevText = TextBox1.Text '現状のテキストを憶える End Sub End Class ----- 文字列が長いと、ちょっと厳しいかもしれませんが…

関連するQ&A

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

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

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

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

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

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

  • 「ひらがな→半角英数字」以外の入力切り替えのロック

    「ひらがな→半角英数字」以外の入力切り替えのロック  Phoenix001と申します。早速質問に入らせていただきます。  タイピングをしていて、誤って英語大文字やカナ文字しか入力出来ないモードにしてしまうことがあります。特にタイピングの練習をしていたり、急いで文章を打っている時ににこれが起こると調整にいちいち時間を取られます。  そこでお聞きしたいのですが、文字の切り替えを「ひらがな→半角英数字」のみしか出来ないように意図的に他の切り替え(全角カタカナ、英数、半角カタカナ、直接入力?など)をロックする方法はありませんか?(なお、直接入力に「?」を付けたのは、いまいち直接入力の有用性や意味が分からないからです)  あれば大助かりなのですが…………何か方法をご存じの方は是非ご享受下さい。  よろしくお願い致します。

  • 突然、半角英数字が入力できなくなりました。

    テキストエディターを使ってると、いきなり半角英数字の入力ができなくなりました。入力切替すると半角英数字の直接入力のはずが半角カナ文字が直接入力D絵表示されます。ウィルスチェックは毎週してますし、今日もしたばかりです。どうか対策を教えてくださいお願いします。

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

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

  • VBでローマ字入力とかな入力を使い分けたい時どうすれば??

    VisualBasic6.0を使って、 フォームの上にテキストボックスをふたつ 作ったプロジェクトを新規で作成します。 今、IMEの文字入力方式はローマ字方式を 使っているとします。今半角カナ入力状態に なっているとします。 その状態で、そのテキストボックスの上で Aを3回押すと半角カナでアアアとでます。 テキストボックス上で ALT + ひらがな を押して、かな入力に切り替えます。 そのテキストボックス上でAを3回押すと 半角英数字でaaaと出ます。 もうひとつのテキストボックスをクリックして そっちに移動してから、もとのテキストボックスに 移動します。 そこで、Aを3回押すと半角カナでチチチと出ます。 こういう手順を踏まないとひとつのテキストボックス上 でかな入力とローマ字入力を変えることができないですが 何か方法はないのでしょうか?それともこれは昔から どうしようもないことなのでしょうか? それは、この教えてGOOの質問のタイトルと 質問の内容のテキストボックスでも同じ事が 言えると思います。 普段はローマ字入力で、ある半角カナで入力したい テキストボックスにきた時だけ、何かをして かな入力に変更したいのですが、どうすればよいでしょう? 今、フォームを全画面表示していて IMEツールバーはタスクバーにしまったままにしてお きたいので、IMEツールバー上から変更するという 方法は使えないです。 どなたか親切な方回答お願いしますっ・・・。 また、ちなみにプログラム上から変えることって できるのでしょうか?やるつもりはないですが 一応聞いてみたいです。

  • テキストボックスの入力モードを制御したい

    こんにちは。 いまWebページ上のテキストボックスに入力する処理を 作ろうとしています。 そこであるテキストには半角,あるテキストには全角入力, というように制御したいのですが, HTMLでそのようなことができるでしょうか? 教えてください。よろしくお願いします。

    • ベストアンサー
    • HTML
  • Perlで半角英数字以外の入力を拒否するには

    全く想像がつかないので、ご回答お願いいたします。 現在Perlで簡単なプログラムを作成しているのですが、全角で何かを入力するとプログラムがフリーズしてしまいます。これを防ぐために、半角の英数字以外の入力をシャットアウトしたいのですが、その判定をするにはどういうプログラムを入れればよいでしょうか。 データはPOSTで送っており、運用上、全角文字だけでなく、できれば半角カナも排除したいのですが……。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • テキストボックスの入力制限

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