アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

初めてコーディングを行っておりますが、
文字制御についてわからないのでご享受ください。

IMEの設定 Alphaになっているテキストボックスがあります。

こちらに、直接入力や、貼り付けなどで、
全角文字、半角カナが入力されないようにするにはどうしたらよろしいでしょうか?

よろしくお願いします。

A 回答 (3件)

ImeModeはOffの方がいいように思います



キー入力に関しては
TextBoxのKeyDownイベントで
if e.KeyCode = Keys.ProcessKey then
  e.Handled = true
  TextBox1.ImeMode = ImeMode.Off
else if e.Keycode = Key.Insert then
  ' キーボードによる貼り付け操作
  if e.shift then
    e.Handled = true
  end if
End if
といった具合で処理出来そうです

マウスの右クリックのコンテキストメニューの対策は
ContextMenuをFormに貼り付けてメニュー項目は何も設定しません
Form_Loadイベントなどで
TextBox1.ContextMenu = ContextMenu1
といった具合に設定します …
    • good
    • 1
この回答へのお礼

返事遅れましたが、なんとか実行できました。
ありがとうございました。

お礼日時:2008/05/02 11:11

No.2です。


すみません、書いてから気が付いたんですが、
キャレットを後端に移動している部分は、文字列の途中に文字を差し込もうとした時にマズイですね(汗)
その辺は、適当にアレンジお願いします。
    • good
    • 0
この回答へのお礼

返事遅れましたが、なんとか実行できました。
大変参考になりました。ありがとうございました。

お礼日時:2008/05/02 11:12

当方、VS2005で確認しました。

同じだとは思いますがご了承ください。
まず、IMEModeはDisableがいいと思います。Offだと起動できるので。
で、あまりうまい方法では ないかもしれませんが、以下のような感じで
一応いけるはずです。
以下では、入力(貼り付け)されて指定以外の文字があったら、入力(貼り付け)直前の状態に戻します。

-----
Public Class Form1

Private prevText As String = "" '変更前テキスト保存用

Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

If TextBox1.TextLength > 0 Then '何か入力されていたら処理
For i As Integer = 0 To TextBox1.TextLength - 1
Select Case Asc(TextBox1.Text.Substring(i, 1)) '1文字ずつ文字コードチェック
Case 48 To 57, 65 To 90, 97 To 122 '半角数値、アルファベット大文字・小文字なら何もしない
Case Else '上記以外なら、直前に憶えていたテキストに戻してチェック終了
TextBox1.Text = prevText
Exit For
End Select
Next
End If

TextBox1.Select(TextBox1.TextLength, 0) 'キャレットをテキスト後端に
prevText = TextBox1.Text '現状のテキストを憶える

End Sub

End Class
-----

文字列が長いと、ちょっと厳しいかもしれませんが…
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A