PowerTools InputMan for Windows Forms 8.0J
IMEモードの切り替え

IMEモードを切り替える方法について解説します。

IMEモードについて

入力モード

標準コントロールのIME入力モードを設定するには、コントロールのWeb サイトImeMode プロパティを使用します。InputMan のコントロールも同様で、IMEコンポーネントは使用せず、各コントロールのImeMode プロパティで設定します。

以下のサンプルコードは、テキストコントロール(GcTextBox1)のIME入力モードをひらがなに設定する例です。

GcTextBox1.ImeMode = ImeMode.Hiragana
gcTextBox1.ImeMode = ImeMode.Hiragana;

変換モード

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);
IMEモードとInputScopeプロパティ

Windows 7以前のOSではIMEモードがスレッド単位で保持されていましたが、Windows 8以降ではユーザー単位で保持されるように仕様が変更されています。この変更によって、ImeMode プロパティによるIMEモードの切り替えが動作しない場合があります。

Windows 8以降のOSにおいて、Windows 7以前と同じようにIMEモードをスレッド単位で保持するには、以下の手順で「アプリ ウィンドウごとに異なる入力方式を設定する」の設定を変更します。

  1. コントロールパネルを開き、「時計、言語、および地域」から「言語」-「詳細設定」をクリックします。
  2. 「入力方式の切り替え」グループの「アプリ ウィンドウごとに異なる入力方式を設定する」をオンにします。
  3. 「保存」ボタンをクリックして設定を有効にします。

InputScope プロパティを使用することで上記の設定なしでWindows 7以前のOSと同じようにIMEモードを制御することができます。

InputScopeプロパティによる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);
  • InputScope プロパティはタッチキーボードに影響します。たとえば InputScope プロパティでIMEモードを全角英数にしたとき、タッチキーボードを表示するとそのキーボードのレイアウトが英数になります。
    詳細については「タッチキーボード」を参照してください。
  • InputScope プロパティで全角カタカナ、半角カタカナおよび全角英数を使用するとき、タッチキーボードにはこれらに対応するレイアウトが提供されないため、タッチキーボードのレイアウトは切り替わりません。タッチキーボードからこれらの文字を入力する場合には変換候補から選択して入力します。
  • InputScope プロパティの動作はText Services Framework のSetInputScope 関数に依存しています。
参照

 

 


© 2004-2015 GrapeCity inc. All rights reserved.