• ベストアンサー

buttonを使用したtextboxへの入力について

こんにちは、初めて投稿させていただきます。 現在VB2005を勉強しています。 ボタンを押すとtextboxに文字が入力されるというものを作成しているのですがひらがなを漢字に変換した際、次の文字を打とうとすると2文字目を入力した際に変換した文字が消えてしまいます。 このような具合です。 「きょうは」と打ち、変換して「今日は」にした後「はれ」と打とうとすると「れ」を入力した際に「今日は」が消えて「はれ」だけになってしまいます。 何処がいけないのかまったくわからない状況で困っています。 ボタンの設定は下記のようにkeybd_eventでそれぞれ行っています。 Private Sub ExButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExButton1.Click TextBox4.Focus() 'Aを押す TextBox4.Text = "" TextBox4.Focus() Call keybd_event(VK_A, 0, 0, 0) Call keybd_event(VK_A, 0, KEYEVENTF_KEYUP, 0) End Sub

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

  • ベストアンサー
  • korin_
  • ベストアンサー率69% (46/66)
回答No.3

そうでしたか。 おそらく、TextBox4.Text = "" が邪魔しているんだと思います。 「今日は」にした後「は」を打つ時には変換が確定されていないから「今日は」が消えずに残りますが、「れ」を打つときには変換が確定されているので、TextBox4にある文字列が全て消えてしまっているのでは? 一度 TextBox4.Text = "" を削除して試してみてください。

micky02
質問者

お礼

今やってみたところ、できました! ここ数日悩んでいたので本当に助かりました。ありがとうございます。 丁寧なご説明ありがとうございました。

その他の回答 (2)

  • korin_
  • ベストアンサー率69% (46/66)
回答No.2

こんにちは。 そのコードだと、"a" をテキストボックスに表示しているだけですよね? 実際に「今日ははれ」を表示しようとしているコードを提示していただければ、原因がわかると思います。

micky02
質問者

補足

はい、記述したコードはaを入力する設定ですが、IMEを下記のように設定していて「あ」を入力できるようにしています。 TextBox4.ImeMode = Windows.Forms.ImeMode.On そして同じようにして50音順それぞれのボタンを作成しています。 なので実行画面でそれぞれのボタンを押すというものを作成してます。

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

見た限り原因を追究できる情報が見当たりません。 そこでkeybd_eventの内容を教えていただきたいです。 一応現状での問題点は、 >TextBox4.Focus() 'Aを押す TextBox4.Text = "" TextBox4.Focus() TextBox4.Focus()を2回記述する意味がないということでしょうか。

micky02
質問者

お礼

korinさんのご指摘通り修正してみたところなんとかでき、解決することができました。 回答ありがとうございました。

micky02
質問者

補足

setfocusの指摘ありがとうございます。2回記述していた部分は修正させていただきました。 keybd_eventの内容は Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Integer, ByVal wMapType As Integer) As Integer Private Const VK_CAPITAL = &H14 Private Const VK_A = &H41 Private Const VK_B = &H42 Private Const VK_C = &H43      Private Const KEYEVENTF_EXTENDEDKEY = &H1 Private Const KEYEVENTF_KEYUP = &H2 といった具合で書いています。 keybd_eventの内容というのはこの部分でよろしかったでしょうか・・・?

関連するQ&A