GcImeManagerコンポーネントについて
IME管理コンポーネント「GcImeManager」は、日本語入力システム(IME)による入力プロセス中に、使用可能な読み取り文字列を取得してふりがなを作成する機能や、IMEの状態を設定・取得・保持するといった機能を、GcTextBoxコントロールやTextBoxコントロール(WPF標準コントロール)などのテキスト入力用のコントロールに拡張するコンポーネントです。
GcImeManagerコンポーネントはページに配置するコンポーネントではないので、この機能を使う場合はツールボックスからページのコンポーネントをドラッグ&ドロップするのではなく、そのままXAMLのコードに記述します。そのため、前述したとおり、あらかじめ参照設定を行ってください(前ページの「コンポーネントのインストール」参照)。
ふりがなの自動取得
WPFのデータバインディング機能とIME管理コンポーネントを組み合わせることで、コントロールに入力された変換文字列の「読み」にあたる文字列(ふりがな)を、指定したコントロールへ自動的に表示できます。
入力された読み取り文字列は、以下の3つのモードに変換できます。
- 日本語の文字を半角カタカナに変換
- 日本語の文字を全角カタカナに変換
- 日本語の文字をひらがなに変換
ふりがなの形態は、Webサイトの登録ページなどを見てもさまざまで、使用するデータベースの設計に依存しているため、GcImeManagerコンポーネントはどのふりがなにも対応しています。
ふりがなの設定はとても簡単です。ふりがなを出力したいコントロールのTextプロパティに、Bindingオブジェクトを使ってGcImeManagerのReadingStringプロパティの値を取得し、どのコントロールの入力からふりがなを取得するのかを指定しておきます。BindingオブジェクトのPathプロパティにReadingStringプロパティを設定することで、漢字の入力が行われるたびに指定したコントロールにて読み取り文字列が表示されるようになります。
次のコードは、TextBox1に入力された日本語からふりがなを取得し、TextBox2に出力します。
<TextBlock Text="好きな漢字を入力してください。" /> <TextBox Name="textBox1" /> <TextBlock Text="ひらがな"/> <TextBox Name="textBox2" > <TextBox.Text> <Binding Mode="TwoWay" ElementName="textBox1" Path="(im:GcImeManager.ReadingString)" /> </TextBox.Text> </TextBox>
また、読みをどの文字種に変換するかは、日本語を入力する側のTextBoxでReadingStringKanaModeプロパティを使用して指定します。
前述のコードを、半角カタカナのふりがなに変換するよう修正すると、以下のようになります。
<TextBlock Text="好きな漢字を入力してください。" /> <TextBox Name="textBox1" im:GcImeManager.ReadingStringKanaMode="KatakanaHalf"/> <TextBlock Text="ひらがな"/> <TextBox Name="textBox2" > <TextBox.Text> <Binding Mode="TwoWay" ElementName="textBox1" Path="(im:GcImeManager.ReadingString)" /> </TextBox.Text> </TextBox>
設定値 | 変換文字列 |
KanaMode.KatakanaHalf | 半角カタカナ |
KanaMode.Katakana | 全角カタカナ |
KanaMode.Hiragana | ひらがな |
ふりがなの出力方法も設定できます。これはReadingStringOutputModeプロパティを使用し、上書きにするのか追記にするのかを次の値で指定します。
プロパティ値 | 説明 |
ReadingStringOutputMode.None | 読み取り文字列を反映させない |
ReadingStringOutputMode.Append | 末尾に読み取り文字列を追加 |
ReadingStringOutputMode.Replace | 新たな読み取り文字列で上書き |
IMEのオンオフの設定と状態の保持
「.NET Framework」のInputMethodクラスのPreferredImeStateプロパティを使用して、各入力コントロールにフォーカスが移った時点で、IMEを自動的にオンオフさせることができます。InputMethodクラスそのものは.Net Frameworkのクラスですが、GcImeManagerコンポーネントではこのクラスの機能とやり取りをしてIMEの制御を行います。
また、GcImeManagerコンポーネントでは、次のようにIME状態を保持させることができます。
- 日本語IMEバーの状態の変更を監視し、状態が変更された場合に現在のIMEバーの状態をターゲット要素に適用します。
- 要素がフォーカスを取得したときに、日本語IMEバーの現在の状態をバックアップし、前回フォーカスを取得していた時点でのIME状態を再びその要素に適用します。
- その要素がフォーカスを失ったときに、上記で保存していたバックアップの内容を復元します。
わかりやすくいうと、前回IMEで設定した変換入力モードを常に保持させることができる、という機能です。通常、IMEは変換入力モードを一度「全角カナ」や「全角英数」に設定しても、フォーカスが移動するたびに常に「ひらがな」に戻してしまいます。
これに対して、GcImeManagerコンポーネントでは一度設定した変換入力モードを、フォーカスが行き来しても常に同じ変換入力モードを保持します。変換入力モードを保持するには、AllowSaveImeStatusプロパティを「True」に設定します。
次のサンプルアプリケーションは、3つのTextBoxコントロールを以下のように設定しています。
- IMEの設定はなにも行っていない
- AllowSaveImeStatusを「true」に設定しIMEの状態を保持
- IMEの状態を「ひらがな」に設定
この状態で、「2」のTextBoxコントロールだけ変換入力モードを変えても、常にそのモードを保持します。