MESCIUS InputMan for Windows Forms 12.0J > InputManの使い方 > IMEコンポーネント > IMEモードの切り替え |
IMEモードを切り替える方法について解説します。
標準コントロールのIME入力モードを設定するには、コントロールのImeMode プロパティを使用します。InputMan のコントロールも同様で、IMEコンポーネントは使用せず、各コントロールのImeMode プロパティで設定します。
以下のサンプルコードは、テキストコントロール(GcTextBox1)のIME入力モードをひらがなに設定する例です。
IMEの変更モードを設定するには、IMEコンポーネントを使用します。IMEコンポーネントをフォームに配置すると、SetImeSentenceMode メソッドが入力コントロールのプロパティウィンドウに「ImeSentenceMode プロパティ」として追加されます。IME変換モードの設定は、ImeSentenceMode 列挙体を使用し、次の5つのモードがあります。
ImeSentenceModeの値 | 説明 |
---|---|
NoControl | IMEの変換モードを制御しません。 |
Normal | IMEの変換モードを一般に設定します。 入力されたデータは[Space]キーまたは[Enter]キーの押下により、変換または確定されます。 |
BiasForNames | IMEの変換モードを人名/地名に設定します。 |
BiasForSpeech | IMEの変換モードを話し言葉優先に設定します。 |
Direct | IMEの変換モードを無変換に設定します。データは変換されず、入力時に確定されます。 この機能は、ひらがなや全角・半角カタカナなどで名前や住所などを入力する場合、[Enter]キーや[Space]キーを何度も押さずに済むため大変便利です。ただし、このモードで漢字を入力することはできません。 |
Windows 8以降に搭載されているMicrosoft IME 2012では「一般」と「無変換」のみが提供されているため、「人名/地名」または「話し言葉優先」が選択されている場合には「一般」で動作します。 |
IME変換モードをコードから設定するには、SetImeSentenceMode メソッドを使用します。
以下のサンプルコードは、テキストコントロール(GcTextBox1)のIME変換モードを無変換に設定する例です。
Imports GrapeCity.Win.Editors
GcIme1.SetImeSentenceMode(GcTextBox1, ImeSentenceMode.Direct)
using GrapeCity.Win.Editors;
gcIme1.SetImeSentenceMode(gcTextBox1, ImeSentenceMode.Direct);
Windows 7以前のOSではIMEモードがスレッド単位で保持されていましたが、Windows 8以降ではユーザー単位で保持されるように仕様が変更されています。この変更によって、ImeMode プロパティによるIMEモードの切り替えが動作しない場合があります。
Windows 8以降のOSにおいて、Windows 7以前と同じようにIMEモードをスレッド単位で保持するには、以下の手順で「アプリ ウィンドウごとに異なる入力方式を設定する」の設定を変更します。
InputScope プロパティを使用することで上記の設定なしでWindows 7以前のOSと同じようにIMEモードを制御することができます。
IMEコンポーネントをフォームに配置すると、SetInputScope メソッドが入力コントロールのプロパティグリッドに「InputScope プロパティ」として追加されます。
InputScope プロパティでは、新たな入力方式が採用されたWindows 8以降のOSにおいても、Windows 7以前と同じようにIMEモードを制御できます。
InputMan におけるInputScope プロパティとImeMode プロパティの挙動の差異は現在のところ確認されていませんが、InputScope プロパティの動作は Text Services Framework のSetInputScope 関数に依存した動作となります。よって、ImeMode プロパティとは異なる内部構造で動作するプロパティとなるため、Windows 8以降のOSにおいてIMEモードをWindows 7以前の動作と全く同じ挙動にしたい場合は、上記OSの設定値(「アプリ ウィンドウごとに異なる入力方式を設定する」)を変更することを推奨します。
ただし、ImeMode プロパティとInputScope プロパティの両方が変更されている場合、通常はInputScope プロパティの設定が優先されます。ImeMode プロパティの設定を優先したい場合は、InputScope プロパティをDefault に設定する必要があります。
なお、ImeMode プロパティがDisable に設定されているときは、InputScope プロパティの値がDefault 以外の場合でもIMEモードが無効になる場合があります。InputScope プロパティの設定を優先したい場合は、ImeMode プロパティをDisable 以外に設定する必要があります。
InputScopeプロパティには、InputScopeNameValue 列挙体を使用して以下の値を設定できます。
InputScopeの値 | 説明 |
---|---|
AlphanumericFullWidth | 全角英数字のテキスト入力パターンを設定します。 |
AlphanumericHalfWidth | 半角英数字のテキスト入力パターンを設定します。 |
Default | 既定のテキスト入力パターンを設定します。 |
EmailSmtpAddress | 簡易メール転送プロトコル(SMTP)電子メールアドレスのテキスト入力パターンを設定します。 |
Hanja | Hanja 文字のテキスト入力パターンを設定します。 |
HanjaFullWidth | 全角 Hanja 文字のテキスト入力パターンを設定します。 |
HanjaHalfWidth | 半角 Hanja 文字のテキスト入力パターンを設定します。 |
Hiragana | ひらがな書記体系のテキスト入力パターンを設定します。 |
KatakanaFullWidth | 全角カタカナ文字のテキスト入力パターンを設定します。 |
KatakanaHalfWidth | 半角カタカナ文字のテキスト入力パターンを設定します。 |
Number | 数字のテキスト入力パターンを設定します。 |
NumberFullWidth | 全角数字のテキスト入力パターンを設定します。 |
Search | 検索クエリーのテキスト入力パターンを設定します。 |
TelephoneNumber | 電話番号のテキスト入力パターンを設定します。 |
Url | URL(Uniform Resource Locator)のテキスト入力パターンを設定します。 |
InputScope プロパティの機能をコードから利用するには、SetInputScope メソッドを使用します。
以下のサンプルコードは、テキストコントロール(GcTextBox1)にひらがな書記体系のテキストパターンを設定する例です。
Imports GrapeCity.Win.Editors
GcIme1.SetInputScope(GcTextBox1, InputScopeNameValue.Hiragana)
using GrapeCity.Win.Editors;
gcIme1.SetInputScope(gcTextBox1, InputScopeNameValue.Hiragana);
|