@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

IMEモードについて

1
投稿者投稿内容
モモ
会議室デビュー日: 2009/03/24
投稿数: 4
投稿日時: 2009-03-24 10:48
テキストボックスのIMEモードを半角カナにしたいのですが、
下記のように設定しても初期値として設定するだけの為、
ユーザ操作によるIMEモードの変更が可能になってしまいます。
コード:
me.txtbox1.ImeMode = Windows.Forms.ImeMode.KatakanaHalf


半角カナ入力ができ、さらにキーボードによりIMEモードを変更不可にすることはできないのでしょうか?
スペースキーでの変換、F6、F7などのショートカットキーの操作ができないようにしたいです。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2009-03-24 11:36
引用:

モモさんの書き込み (2009-03-24 10:48) より:
テキストボックスのIMEモードを半角カナにしたいのですが、
下記のように設定しても初期値として設定するだけの為、
ユーザ操作によるIMEモードの変更が可能になってしまいます。



ImeModeプロパティの設定はユーザの利便性のために行うもので、
入力制限のために使用するものではないですからね。

引用:

半角カナ入力ができ、さらにキーボードによりIMEモードを変更不可にすることはできないのでしょうか?



プロパティの設定等で行う方法はないと思います。
(簡単でない方法であれば、たぶんあるだろうと思いますが、私は知りません)

引用:

スペースキーでの変換、F6、F7などのショートカットキーの操作ができないようにしたいです。



どうしてそのようにしたいのでしょうか?
もし入力制限のためということであれば、IMEの設定により入力制限をするのではなく、
入力チェックで半角カナ以外をはじいておけばよいと思いますがどうでしょうか。
仮にIMEの設定を制限できたとしても、入力チェックは必要ですから。

#個人的にはユーザの入力方法を制限するのはユーザビリティが下がるのでお勧めしません。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2009-03-24 11:43
google 検索 「VB .NET キーボード 無効」

でもよねKENさんのおっしゃるように入力チェック時に制限を行う方が良いと思います。
コピーした文字を貼り付けた時などのことも考えないといけないですし
キーの制御は個人的にとても嫌です。
モモ
会議室デビュー日: 2009/03/24
投稿数: 4
投稿日時: 2009-03-24 11:54
引用:

ImeModeプロパティの設定はユーザの利便性のために行うもので、
入力制限のために使用するものではないですからね。


確かにそうですね。
簡単にプロパティで出来そうにないので入力チェック時下記のように全角存在チェックをすることにしました。
ありがとうございました。
コード:
strValue = me.textbox1.Text
If Len(strValue) = System.Text.Encoding.GetEncoding("Shift-JIS").GetByteCount(strValue) Then
Else
    Debug.Print("全角文字が混在")
End If

108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2009-03-24 11:58
ようするに半角カナ以外の入力をさせたくないということですね。
TextBoxを継承したカスタムコントロールでProcessDialogKeyをオーバーライドして
制御かなぁ。

入力ができないという制御は「数値だけ」「アルファベットだけ」なら
比較的楽でしょうが、半角カナのみということなので、大変だと思います。

貼り付けなども制御しますか?
"リンゴミカン"はみとめるけど"リンgミkン"はだめですよね?
入力確定時かロストフォーカス時の制御はいずれにせよ必要かと。

変更不可、変換、ショートカットキー不可よりも
入力された文字列に対して、
・数値、アルファベット→入力不可、または削除
・ひらがな、全角カナ→半角カナへ変換

なら制御しやすいのかなと思いましたが・・・
いい方法があるのかなぁ。私では思いつきません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2009-03-24 13:23
こんなのしか思いつきませんでした。半角のア〜ン (小文字を含む) であれば列挙はたやすいでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)