投稿日 | : 2005/07/02(Sat) 08:22 |
投稿者 | : おじん |
Eメール | : |
URL | : |
タイトル | : Form_KeyDownについて |
いつもお世話になります。
KeyPreview = Trueにして、キーインされた文字を取得することを
やろうとして、下記コードで実行しました。なお、フォームには
SSTabを貼り付けています。
まず、コード1で実行すると、KeyDownイベントが2度発生したかのように
キーインされた文字が2文字づつイミディエイト欄に表示されます。ここで
SSTabを取り除くと1文字になります。
勿論、ダブルクリックあるいは押しつづけると、それ相当の2文字づつに
なります。
それで回避のためコード2のようにやったのですが、SSTabを使用する場合
処理法、留意点がありませんか。
SSTabは何か一癖ある特別なコントロールですか。
よろしくご指導ください。
Option Explicit
Dim txt As String
'コード1:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
txt = txt & Chr(KeyCode)
Debug.Print txt
End Sub
'コード2
'Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'Static flg As Boolean
'If Chr(KeyCode) = " " Then '初期化するため
'txt = "": flg = False: Exit Sub
'End If
'flg = Not flg
'If flg Then Exit Sub '一つだけ取る
'txt = txt & Chr(KeyCode)
'Debug.Print txt
'End Sub
Private Sub Form_Load()
KeyPreview = True
End Sub