VB2005のTextBoxに半角カタカナのみを入力する方法

このQ&Aのポイント
  • VB2005を使ってプログラムを組んでいる際に、TextBoxに半角カタカナのみを入力し、表示する方法を知りたい。
  • 現在、TextBoxに入力される文字を半角カタカナに制限するためのコードを試しているがうまくいっていない。
  • 提供されたコードではなぜかうまく動作していないため、他の方法を知りたい。
回答を見る
  • ベストアンサー

VB2005 TextBoxの入力制限について

はじめて質問させていただきます。 現在、VB2005を使ってプログラムを組んでいるのですが、半角カタカナだけをTextBoxに入力し、表示する方法がわかりません。 Private Sub TextBox6_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox6.KeyDown TextBox6.ImeMode = Windows.Forms.ImeMode.KatakanaHalf End Sub Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress If (e.KeyChar < "ア"c Or e.KeyChar > "-"c) And e.KeyChar <> vbBack Then e.Handled = True End If End Sub ↑見にくいかもしれませんがコードです。 この方法ではだめなのでしょうか? 回答をお願いします

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

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

回答2のdevilconanです。追記しておきます。 ネットでサクッと調べてみました。 このコードを入れてみてはいかがでしょうか? 私の環境ではうまくいきましたんでたぶん大丈夫だと思います。 テキストボックス(今回ならtextbox6かな?)のキープレスイベントを追加して Dim CharTable As String = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" If InStr(CharTable, e.KeyChar) = 0 Then e.Handled = True End If を入れてみて下さい。

alice_deen
質問者

お礼

devilconan様 ありがとうございます。 おかげさまで思った通りのプログラムが作成できました! 本当にありがとうございました!

その他の回答 (2)

回答No.2

回答1のdevilconanです。追記しておきます。 コードで書くのであれば、キープレスやキーダウンイベントではなく、formのロードイベントに書けば半角カナで動くと思いますよ。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.ImeMode = Windows.Forms.ImeMode.KatakanaHalf End Sub

alice_deen
質問者

補足

devilconan様 ありがとうございます。 おっしゃられた通りのコードでちゃんと入力することができました。 すみませんがあと一つだけ質問させてください。 いろいろとテストデータをつくってみたのですが、/や*などの記号も入ってしまうことがわかりました。 これらの記号も入力できないようにする方法はあるんでしょうか? 本当に何度も質問してしまいすみません・・・

回答No.1

これってWindowsアプリケーションでいいんですよね?WebだとJavascriptを使うとは思ったら良かったと思います。(うるおぼえですが・・) 私はデザインビューからtextboxのプロパティでImeModeをKatakanaHalfに変更したらできました。 特にコードは書いてません・・。 ちなみに環境はvs2008です。

alice_deen
質問者

補足

devilconan様 回答ありがとうございます。 おっしゃられる通りWindowsアプリケーションで作成しています。すみません。 プロパティの件は最初からやっていました。 捕足になるかもしれませんが、このコードだと入力する際に半角カタカナを入力はできるのですが、Enterを押すとTextBoxの中身が消えてしまいます。 これはどうしてなんでしょうか? コードの If (e.KeyChar < "ア"c Or e.KeyChar > "-"c) And e.KeyChar <> vbBack Then の部分で文字の指定(半角カタカナのみ)をしているのですがこれが間違っているのでしょうか?

関連するQ&A

  • 数字のみの入力制限をかけたTextBoxで、"."の入力も許可したい

    環境はVB.NETです。 以下のコードで、TextBoxへの入力を、0~9の数字のみ(BackSpaceも許可)に制限していますが、"."(少数点)の入力も許可したいです。 e.KeyChar = "."c の判定をIf文に追加してみましたが、実現できませんでした。 ご教授いただけると幸いです。 よろしくお願いします。 Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress  If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> vbBack Then   e.Handled = True  End If End Sub

  • クラスやモジュールで纏める方法ありますか?

    説明が非常にへたくそなので、プログラムをそのまま書きます・・・・ スイマセン Private Sub TextBox1_2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1_2.KeyPress If e.KeyChar = Chr(Keys.Enter) Then Me.SelectNextControl(sender, True, True, True, True) e.Handled = True End If End Sub Private Sub TextBox1_4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1_4.KeyPress If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> vbBack Then e.Handled = True End If If e.KeyChar = Chr(Keys.Enter) Then Me.SelectNextControl(sender, True, True, True, True) e.Handled = True End If End Sub Private Sub TextBox1_5_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1_5.KeyPress If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> vbBack And e.KeyChar <> ","c Then e.Handled = True End If If e.KeyChar = Chr(Keys.Enter) Then Me.SelectNextControl(sender, True, True, True, True) e.Handled = True End If End Sub 上記のプログラム、TextBox○○○_5.KeyPressの○○○の部分が1から100まであるのですが、あまりにも行数が多くなって長くなるので、ほかのクラスやモジュールにまとめる方法ってありませんか? よろしくお願いしますm(__)m

  • 特定の文字を、入力文字数に含めない方法は(VB.NET)

    VB.NETにて特定の文字を、入力文字数に含めないようにするにはどのような処理を行ったらよいのでしょうか? 以下は実際に試みた方法です。「型 'TextBox' でパブリック メンバ 'TextLength' が見つかりません。」というエラーがおきました。 Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox.KeyPress 'マイナスかドットであるか判定 If e.KeyChar = "-" OrElse e.KeyChar = "." Then sender.TextLength = sender.TextLength - 1 End If End Sub

  • VB2008でPictureBoxをキーボードを使って動かしたい

    VBを始めたばかりの初心者です。 VB2008を使ってPictureBoxに取り込んだイラストをキーボードを使って自由に動かしたいと思っています。 今作ったものの問題点 1.現状、全く同時に→と↑のキーを押せば右上に動きます。  また、→キーを押してイラストが右に動いているときに、↑キーを押すと上に動きます。  これを右上に動くようにする方法が知りたいのです。 2.キーを押し続けてイラストを動かし続けようとすると、一回動いて止まってから動き続けるという風になってしまいます。  これを止まらずに動くようにしたいのです。 ちなみにこれ↓が今のソースコードです。 Public Class Form1 Private Sub form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Up Then PictureBox1.Top = PictureBox1.Top - 10 End If End Sub Private Sub form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Down Then PictureBox1.Top = PictureBox1.Top + 10 End If End Sub Private Sub form1_KeyLeft(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Left Then PictureBox1.Left = PictureBox1.Left - 10 End If End Sub Private Sub form1_KeyRight(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Right Then PictureBox1.Left = PictureBox1.Left + 10 End If End Sub End Class これ↑を実行する場合は、デザインにPictureBoxを表示してください。PictureBoxに入れるイラストは適当なものを入れてください。 よろしくお願いします。

  • TextBoxへ文字列をD&Dをする方法を教えてください。

    Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter If (e.Data.GetDataPresent(DataFormats.Text)) Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.None End If End Sub Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop TextBox1.Text = e.Data.GetData(DataFormats.Text)(0) End Sub VB.NETで上記のような方法でドラッグされたテキストを テキストボックスに表示するようにしたいのですが、 この方法だと最初の一文字しかドロップされません。 どこか修正箇所などありましたら、ご教示いただけると助かります。

  • 簡単なプログラムにまとめる方法

    前回、同じようなプログラムを簡単にまとめる方法を教えて頂いたのですが新しい事で困ってしまいました。 説明が非常にへたくそなので、プログラムをそのまま書きます・・・・ スイマセン Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus Me.TextBoxNum.Text = "1" End Sub Private Sub TextBox2_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2_1.GotFocus Me.TextBoxNum.Text = "2" End Sub Private Sub TextBox3_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3_1.GotFocus Me.TextBoxNum.Text = "3" End Sub 上記のプログラム、TextBox○○○_1.KeyPressの○○○の部分が1から100まであるのですが、あまりにも行数が多くなって長くなるので、以下のプログラムで纏めたのですが、 Me.TextBoxNum.Text = "○○○" にフォーカスされたTextBox○○○_1の○○○を入れる方法はありますか? Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus,TextBox2_1.GotFocus,TextBox3_1.GotFocus Me.TextBoxNum.Text = "○○○" End Sub 説明が下手くそでスイマセン、ほかに新しい方法でも有ればお願いします よろしくお願いしますm(__)m

  • 【プログラミング】ショートカットキーの設定について

    KeyPress イベントプロシージャの設定で Private Sub Button1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles Button1.KeyPress If e.KeyChar(Keys.F) Then End If End Sub この中にボタン1の命令をさせたいとき、どのように書けばいいんでしょうか? Visual Basic 2010です コードを教えてください、お願いします

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • TextBoxでEnterキーを押すと、にあるButtonを押したのと同じ効果を出す方法

    VB初心者です。 まだ、はじめたばかりなので、上手く質問を説明できませんが、よろしくお願いします。 環境はVisualBasic .net 2003です。 フォームにテキストボックス(TextBox)とボタン(Button)があります。 テキストボックス内でEnterキーを押すと、ボタン(Button)を押したのと同様の効果をだしたいのですが。 VC++6.0だと、SendMessage(WM_COMMAND , ..... のようなやり方でできたはずですが・・・ --------------------------- テキストボックスのコード Private Sub txtTest_KeyDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTest.KeyDown If (e.KeyCode = Keys.Enter) Then '★★★ここでどういうコードを書いてよいかわかりません。 End If End Sub ---------------------------- ボタンを押したときのイベントハンドラ Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click     ボタンを押したら、このイベントハンドラを呼び出したい。     もしくは、間接的に呼び出したい。 ------- どなたか、やり方をご存知の方がいらっしゃいましたら、よろしくお願いします。

  • Ctrl + Cなど複数の入力キーの感知

    TextBoxでコピーや貼り付け機能などをつけようと思い。 以下のように書きましたが、うまくいきません。 さらに以下の書き方だと例えば、Shift + Zを押した時に Zの文字がテキストボックスに書き込まれてしまいます。 一般的にはどうやって複数のキー入力を感知するのが王道なんでしょうか? VBを勉強し始めたばかりで、わかりにくい説明で申し訳ないです。 Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown   'ctrl + Zで切り取り   If e.KeyCode = Keys.Z Then    If e.Control Then     MsgBox("aa")     TextBox1.Cut()    End If   End If End Sub

専門家に質問してみよう