C♯は詳しくないので、エクセルVBAでやってみました。
ただしこの(フォローのつもりのテストが)、的外れかもしれません。
その際はお許しを。
結論は最終的にコードを半角カタカナに強制的にコンバートするのが安全ということを言いたい。
入力開始「当初」のIMEmodeしか保証され無いようだ。他に変更不可までは保証しないようだ。
ーー
ユーザーフォームを挿入し、1つのテキストボックスを貼り付け、そのテキストボクスのプロパティのfmIMEmodeをはんかく半角カタカナにしました。入力完了のトリガのため、コマンドボタンも貼りつけました。
ユーザーフォームを表示すると下行のIMEmodeの標示は「 カ(ハンカクコモジ)」になります。
そこでテキストボックスに、半角カナ文字を入れて、コマンドボタンをクリックすると
シートのセルに半角カナでセットされました。
ただし、いつもの癖でF7キーを押すと、全角カナ文字になってしまいました。
こうい事もあり、半角カタカナに確実にするには、StrConvに相当するC#の関数(あると思う)で、vbKatakana(VBAの場合です)でかつvbNarrowを指定して変換して、データとしてセットするほうがよいと思います。
VBAの場合は、vbKatakanaはコードが16で,かつvbNarrowはコードが8のようなので、16+8を指定すればよかったように記憶する。