当方、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
-----
文字列が長いと、ちょっと厳しいかもしれませんが…
お礼
返事遅れましたが、なんとか実行できました。 ありがとうございました。