tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル変換ウィンドウについて
記事No4548
投稿日: 2006/11/21(Tue) 10:05
投稿者はねねこ
はじめまして。

現在、VB2005にてソフトキーボードのようなものを作成しているのですが、どうしても解決できない問題があるのでご助力お願いします。

問題点は一度ボタンを押さないとうまく機能しないというものです。
例えば、「あ」ボタンを押したら、テキストボックス内の変換ウィンドウには「あ」とでますが、
この次に「い」ボタンを押しますと、変換ウィンドウの「あ」が消えて「い」だけになります。
この次に「あ」ボタンを押しますと、正常に機能して「いあ」と表示されます。
しかし、この次に一度も押してない「う」ボタンを押しますと、変換ウィンドウは「いあ」が消えて「う」と表示されてしまいます。
説明下手ですみません・・・
このような問題点を解決する方法がありましたら、どうかお教えください。
以下に現在のソースを添付します。
それでは、失礼します。


-----------------------------------------------------------------

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait("a")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait("i")
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait("u")
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait("e")
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait("o")
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait(" ")
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait("{ENTER}")
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.KeyPreview = True
        TextBox1.ImeMode = Windows.Forms.ImeMode.On
        TextBox1.ImeMode = Windows.Forms.ImeMode.Hiragana
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        Me.TextBox1.Focus()
        SendKeys.SendWait("{RIGHT}")
        Me.TextBox1.Focus()
    End Sub
End Class

[ツリー表示へ]
タイトルRe: 変換ウィンドウについて
記事No4549
投稿日: 2006/11/21(Tue) 11:47
投稿者はねねこ
すみません、各Buttonの割り当てを書いていませんでした。

Button1=あ
Button2=い
Button3=う
Button4=え
Button5=お
Button6=変換
Button7=決定
Button8=→

以上です。
1〜5が文字入力
6が変換ウィンドウを変換し、候補リストウィンドウを出します。
7で選んだ候補を決定します。
8で複数変換ウィンドウがある際に変換ウィンドウ間を移動します。

それでは、よろしくお願いします。
失礼します。

[ツリー表示へ]
タイトルRe^2: 変換ウィンドウについて
記事No4551
投稿日: 2006/11/21(Tue) 19:18
投稿者YAS
ボタンを押した瞬間にフォーカスがスクリーンキーボードに移動し,そのために不具合が
生じていると思います。

私も前にスクリーンキーボードの作成をしたことがあり,作成の過程をページにまとめま
したので参考にしてください。

http://homepage1.nifty.com/yasunari/VB/VB2005/ScreenKeyBoardMaking.htm

[ツリー表示へ]
タイトルRe^3: 変換ウィンドウについて
記事No4552
投稿日: 2006/11/21(Tue) 19:22
投稿者YAS
あ,申し訳ない。自分自身のテキストボックスに入力するのですね。

ボタンを継承して,フォーカスが来ないボタンにしてみてはいかがでしょうか。

[ツリー表示へ]
タイトルRe^4: 変換ウィンドウについて
記事No4559
投稿日: 2006/11/22(Wed) 11:13
投稿者はねねこ
YASさんありがとうございます。

YASさんのおっしゃるとおりテキストボックスとボタンが一体化したフォームになっています。

通常に入力することに関してはなんら問題なくボタンを押して、そのボタンに割り当てられている文字が入力できるですが、
漢字変換をするためにIMEを使用して変換ウィンドウに入力しようとすると最初に書いたような問題が発生します。


YASさんに教えていただいたサイトを見ながらソースを変えてみたのですがなかなかうまくいきませんでした。

また、別の方法などがありました羅、お手数ですがお願いします。

[ツリー表示へ]
タイトルRe^5: 変換ウィンドウについて
記事No4560
投稿日: 2006/11/22(Wed) 11:25
投稿者はねねこ
すみません、やっぱりYASさんのサイトのを参考にして解決しました。

YASさん本当にありがとうございます。

では、失礼します。

[ツリー表示へ]