DOBON.NET DOBON.NETプログラミング掲示板過去ログ

TextBoxでのIME変換前読みガナを取得したい

環境/言語:[WindowsXP VB.NET2003]
分類:[.NET]

h.hayashiと申します。

PictureBoxにイメージ画像を表示し、
その説明文をグラフィックで表示しています。
説明文には非表示のTextBoxのTextChangedイベントにて取得したTextを
反映します。
IME変換も行いますが、その場合変換が確定しないとTextBox_TextChangedにて
検出できないため、入力読み仮名を表示できません。
以下2つの解決方法を考えています。

1.「変換前読みガナ」を取得する。
2.「変換前読みガナ」の表示位置をプログラムで指定する。

どちらの方法もノウハウがありません。
ご存知の方おられましたら教えてください。

他の方法でも歓迎です。
■No13628に返信(h.hayashiさんの記事)

> 1.「変換前読みガナ」を取得する。
> 2.「変換前読みガナ」の表示位置をプログラムで指定する。
>
> どちらの方法もノウハウがありません。
> ご存知の方おられましたら教えてください。

自分が使っている方法なので、これがご希望な物かどうかわからないのですが・・
http://www.mitene.or.jp/~sugisita/vbnet_smp.html にある、自動ふりがな表示を利用するととりあえず、フリガナの取得は
出来ると思います。参考になれば幸いです。
■No13630に返信(TATSUYAさんの記事)

TATSUYAさん、早速の返信ありがとうございます。

> 自分が使っている方法なので、これがご希望な物かどうかわからないのですが・・

私の説明が不十分でした。申し訳ありません。
例えば、IMEがON状態(全角ひらがな)で「かきこみ」を「書込」に変換したい場合、キーボードで「ka」と入力したタイミングで「か」を取得したいのです。

※TextBoxではなくてRichTextBoxでやっていましたが(私の勘違いでした)、
これをTextBoxに変更したところ、そのTextBoxの位置(一番手前)に表示できました。PictureBox上での表示位置を微調整すれば可能であることがわかりました。
下記にサンプルを示します。

Dim mRectF As RectangleF
Dim mdx As Single
Dim mdy As Single

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
PictureBox2.Refresh()
End Sub

Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
Dim img As Image = Image.FromFile("C:\Documents and Settings\watashi\デスクトップ\無題.tif")
e.Graphics.Clear(PictureBox2.BackColor)
e.Graphics.DrawImage(img, mRectF)
Dim x, y As Single
x = mRectF.Left + mdx
y = mRectF.Top
e.Graphics.DrawString(TextBox1.Text, TextBox1.Font, Brushes.Blue, x, y)
End Sub

Private Sub Form7_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
mRectF = mRectF.FromLTRB(PictureBox2.Width / 2 _
, PictureBox2.Height / 2 _
, PictureBox2.Width - 1 _
, PictureBox2.Height - 1)
mdx = -30
mdy = -3 '微調整用
TextBox1.Location = New Point(PictureBox2.Left + mRectF.Left + mdx, PictureBox2.Top + mRectF.Top + mdy)

End Sub

これで解決済みとさせていただきます。
■No13634に返信(h.hayashiさんの記事)
> ■No13630に返信(TATSUYAさんの記事)
>
>
> これで解決済みとさせていただきます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板