[VB, C#] Windows 8, Window 10 で ImeModeが制御できない問題を解決する

2020年9月4日金曜日

C# IME VB Windows10 Windows8

t f B! P L

Windows 8, Window 10 で ImeModeが制御できない問題を解決する

[VB, C#] Windows 8, Window 10 で ImeModeが制御できない問題を解決する

タイトルの通りですが、Windows 8 以降では Windows Form アプリケーションで、コントロールの ImeModeKatakanaKatakanaHalf を設定しても、カタカナになってくれません。

なぜ ImeMode が効かないのか?

Windows 8 以降、IME Mode の切り替えは、ユーザー単位で切り替わるようになった為、アプリから IME Mode 制御が出来ないようになりました。
(IME をON にした場合、常に ひらがな モードになます)

※ Windows 7までは、IME Modeの切り替えはアプリ単位で行われていた為、問題なくアプリから IME制御が行えました。

スポンサーリンク

対処方法

Windows 8 以降、IMEの制御は、InputScope クラスの利用が推奨されています。
しかしInputScope クラスは、WPF、Windows ストアアプリでしか使えない為、Windows Formアプリでは使用できません。
(Windows Form はもう使うな!という事でしょうか (涙) )

結論としては、コントールパネルの設定で、IMEの制御をユーザ単位から アプリ単位に変更する事ができます。
これで、Windows Formアプリでも 従来通りIMEの制御を行う事が出来ます。

Windows10 設定画面

Windows10 設定画面-地域と言語

Windows10 設定画面-地域と言語-キーボードの詳細設定

おわりに

この方法だと、アプリをインストールする端末すべてに設定が必要となり、とっても面倒です。。。
しかし、今の所これしか方法がない状態です。
これからは Windows Formではなく、WPFや Windows ストアアプリで作れという事ですかね (^^;)

スポンサーリンク

QooQ