- PR -

IMEModeでの入力

投稿者投稿内容
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2005-06-06 15:55
TextBoxを継承したユーザコントロールを作成しています。
そこで質問があります。
例えば、IMEで入力したら、一文字ずつKeyPressイベントが発生するようです。
("あいう"と入力したら、イベントは三回)
全角文字を入力不可にしたい為、Shift_JISに変換して2バイトならキャンセルしようと考えています。
キャンセルする為、e.Handled = Trueとしたのですがまったく効きません。
一文字の全角でも駄目でした。
他に入力された文字をキャンセルする方法はありますでしょうか?

よろしくお願い致します。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-06-06 16:22
ImeModeプロパティをImeMode.DisableにすればIMEを使用不可能にできますが、そう言う解決はどうでしょうか。
いずれにせよコピー&ペーストへの対策としてTextChangedイベントなどで何らかの処理が必要ですが。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-06-06 16:23
こんにちは、じゃんぬ です。

引用:

他に入力された文字をキャンセルする方法はありますでしょうか?


WndProc をオーバーライドして WM_CHAR を捕捉するとか。
まあ、WM_PASTE なんかも考慮しないといけませんね。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2005-06-06 16:37
Hongliangさん、ご回答ありがとうございます。
半角カナを入力する事もあるので、ImeModeは使用する必要があります。

じゃんぬねっとさん、ご回答ありがとうございます。
ちょっと調べてやってみます。

また分からない事が出てきたら投稿させて頂きます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-06-06 16:55
こんにちは、じゃんぬ です。

引用:

全角文字を入力不可にしたい為、Shift_JISに変換して2バイトならキャンセルしようと考えています。


自サイトに こんなもの があります。
よろしければどうぞ。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2005-06-06 17:01
eventArgs.KeyCharを文字コードに変換して範囲指定するとかは?
範囲外だったらKeyCharを0にセットすると入力キャンセルできます。

iKeyAscii = Asc(eventArgs.KeyChar)
''数字以外は、入力不可
If (iKeyAscii < 48 Or iKeyAscii > 57) Then
iKeyAscii = 0
End If
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-06-06 17:14
こんにちは、じゃんぬ です。

引用:

範囲外だったらKeyCharを0にセットすると入力キャンセルできます。


KeyChar は ReadOnly なハズですが...

引用:

iKeyAscii = Asc(eventArgs.KeyChar)
''数字以外は、入力不可
If (iKeyAscii < 48 Or iKeyAscii > 57) Then
iKeyAscii = 0
End If


iKeyAscii は、e.KeyChar と別物になってますよ。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2005-06-06 17:49
ああ・・・。ぼけぼけでごめんなさい。
じゃんぬねっとさんの仰るとおりです。

ウチにあったソースはそのあとFinally句で
If iKeyAscii = 0 Then
eventArgs.Handled = True
End If
としてました。

[ メッセージ編集済み 編集者: tpkr 編集日時 2005-06-06 18:17 ]

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