Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • 締切済み

c♯テキストボックスの半角カナのみの入力

こんばんは、現在Visual Studio2013でC♯用いてコードを書いています。 そこで困ったことがあるのですが、テキストボックスの入力文字制限で半角カナだけにしたく、コントロールのImeModeプロパティをKatakanaHalfにしたのですが、全角文字も入力出来てしまいます。 ImeModeプロパティのみの変更で半角カナだけの入力が可能だと思ったのですが、他にもプロパティ値を変更する必要はあるのでしょうか?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

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

すると、全ての回答が全文表示されます。
  • hiodraiu
  • ベストアンサー率15% (451/2844)
回答No.2

IMEを制御できたとしても、クリップボードを経由した貼り付けで半角カナ以外の入力が出来てしまいます。 この手の制御は、入力する側の制御ではなく、入力を受け取り側での処理で対応するのが昔からある一般的な方法だと思います。

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1767/2645)
回答No.1

ImeModeプロパティは初期設定(既定設定)で、その後ユーザーの変更を受け付けないというものではなかったと思います。

すると、全ての回答が全文表示されます。

関連するQ&A