スポンサーリンク

【VB.NET】テキストボックスをカタカナとひらがなのみの入力に制限する方法

VB.NETにおけるテキストボックスの入力制限の方法です。半角カタカナ・全角カタカナ・ひらがなの3種類の方法を紹介します。

スポンサーリンク

KeyPressイベントとTextChangedイベントで制御する

テキストボックスにカタカナとひらがなのみを入力させる方法は、KeyPressイベントとTextChangedイベントで制御する方法が一番簡単です。

本記事では以下の仕様でサンプルプログラムを作成します。

  • 半角カタカナ・全角カタカナ・ひらがなのみ入力可能(各テキストボックスを用意)
  • BackSpaceキーとDeleteキーが使える
  • 右クリック不可にしてコピペさせない

画面は簡単なものを用意しました。

各テキストボックスは以下の仕様にします。

  • 一番上のテキストボックス:半角カナのみ入力
  • まんなかのテキストボックス:全角カナのみ入力
  • 一番下のテキストボックス:ひらがなのみ入力

ではコードを書く前に準備をしましょう。

スポンサーリンク

準備

今回の入力制御のテキストボックスを作成するにあたって、KeyPressイベントとTextChangedイベントにコーディングしますが、事前の準備が必要となります。

  • ImeModeプロパティを変更する
  • ShortcutsEnabledプロパティをFalseに変更
  • KeyPressイベントとTextChangedイベントを作成する

それぞれ、Visual Studio 上で設定しましょう。

ImeModeプロパティを変更

まず、ImeModeプロパティの値を変更します。

Visual Studio のテキストボックスのImeModeプロパティをそれぞれ次の様に変更して下さい。

  • 半角カナ→KatakanaHalf
  • 全角カナ→Katakana
  • ひらがな→Hiragana

画面はこんな感じ。

これでImeModeの設定は完了です。

ShortcutsEnabledプロパティをFalseに変更

次に、Visual Studio のテキストボックスのShortcutsEnabledプロパティFalseに変更します。

下の画像のようにテキストボックスのShortcutsEnabledプロパティを変更して下さい。

ShortcutsEnabledプロパティがTrueのままだと、右クリックでコピペして半角カタカナ・全角カタカナ・ひらがな以外の値(数字や記号などの文字)がテキストボックスに入ってしまうので、事前に変更しておきます。

KeyPressイベントとTextChangedイベントを作成する

最後にKeyPressイベントとTextChangedイベントを作成します。

KeyPressイベントを作成する場合、プロパティ画面のイナズマ(カミナリ)マークをクリックして、KeyPressの項目を探します。その右側をダブルクリックしてイベントを作成します。

TextChangedイベントはコントロールからダブルクリック作成して下さい。

スポンサーリンク

サンプルコード

ユーザーに使いやすい作りにするために、BackSpace(バックスペース)キーは入力可能とします。

こちらがサンプルコード↓

'System.Text.RegularExpressionsを追加
Imports System.Text.RegularExpressions
Public Class Form_VB_TextBox_Kana_Only
    '半角カナのキー押下イベント
    Private Sub txtHalfKanaOnly_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtHalfKanaOnly.KeyPress
        If e.KeyChar = ControlChars.Back Then
            Exit Sub
        End If
    End Sub

    '全角カナのキー押下イベント
    Private Sub txtKanaOnly_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtKanaOnly.KeyPress
        If e.KeyChar = ControlChars.Back Then
            Exit Sub
        End If
    End Sub

    'ひらながのキー押下イベント
    Private Sub txtHiraganaOnly_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtHiraganaOnly.KeyPress
        If e.KeyChar = ControlChars.Back Then
            Exit Sub
        End If
    End Sub

    '半角カナのテキストボックス値変更イベント
    Private Sub txtHalfKanaOnly_TextChanged(sender As Object, e As EventArgs) Handles txtHalfKanaOnly.TextChanged
        'RegexクラスのIsMatchで正規表現を使って判定
        If Regex.IsMatch(txtHalfKanaOnly.Text, "^[\uFF66-\uFF9F]+$") = False Then
            '半角カタカナ以外が入っていたら、テキストボックスをクリア
            txtHalfKanaOnly.Text = ""
        End If
    End Sub

    '全角カナのテキストボックス値変更イベント
    Private Sub txtKanaOnly_TextChanged(sender As Object, e As EventArgs) Handles txtKanaOnly.TextChanged
        'RegexクラスのIsMatchで正規表現を使って判定
        If Regex.IsMatch(txtHalfKanaOnly.Text, "^\p{IsKatakana}*$") = False Then
            '全角カタカナ以外が入っていたら、テキストボックスをクリア
            txtKanaOnly.Text = ""
        End If
    End Sub

    'ひらながのテキストボックス値変更イベント
    Private Sub txtHiraganaOnly_TextChanged(sender As Object, e As EventArgs) Handles txtHiraganaOnly.TextChanged
        'RegexクラスのIsMatchで正規表現を使って判定
        If Regex.IsMatch(txtHalfKanaOnly.Text, "^\p{IsHiragana}*$") = False Then
            'ひらがな以外が入っていたら、テキストボックスをクリア
            txtHiraganaOnly.Text = ""
        End If
    End Sub
End Class

KeyPressイベントとTextChangedイベントは同じロジックを入れています。

  • KeyPressイベント…バックスペースが押された時に有効
  • TextChangedイベント…半角カタカナ・全角カタカナ・ひらがな以外はクリア

というものです。

これで実行すると、

  • 半角カタカナ・全角カタカナ・ひらがなのみ入力可能
  • BackSpaceキーとDeleteキーが使える
  • 右クリック不可にしてコピペさせない

という仕様を満たしたテキストボックスが表示されます。

実際に本記事の真似をしてテキストボックスだけの画面を作成して、実行してみて下さい。

スポンサーリンク

関連記事

【C#】テキストボックスをカタカナとひらがなのみの入力に制限する方法
C#におけるテキストボックスの入力制限の方法です。半角カタカナ・全角カタカナ・ひらがなの3種類の方法を紹介します。
スポンサーリンク

鉄道記事も書いてます!

ちょっとリフレッシュして鉄道記事も読んでみませんか?

鉄道記事バックナンバーはこちら↓

鉄道コム投稿記事一覧ページ