TextBoxのIMEがオンにならない。
当たり前のように使っているIMEの日本語入力が突然使えなくなったら…
ちょうどIME絡みのプログラムを実装してたから、恐らくIMEを制御する プログラムが悪いんだと思っていた。が、全然違うところでハマッてました。 [STAThread]って見たことがあるでしょうか? この属性(アトリビュート)が無いため日本語入力できないようでした。 FormアプリならProgram.csのMainメソッドの頭に付いてるはずです。 あと、メインスレッドから別スレッドを作成してその中でFormを表示 するときはスレッドにSTAをつけないと、日本語入力できないです。 ちょっと調べたのでメモを… .NET FrameworkはCOMを使用してIMEを操作しています。 一部のCOMはSTA(Single Threaded Apartment)でしか動作しません。 C#では[STAThread]属性を外すと、MTA(multithreaded apartment)で認識 するようです。IMEはSTAでないと動かないため日本語入力できなかったのです。
参考文献
|