Visual Basic Tips


Enterでフォーカス移動(API)


目から鱗…
そうか、SendKeysが怪しいのならkeybd_eventでTABをシュミレートしてやればいいのか…気づかない私はアホです。
デフォルトボタンを使った方法より、こちらの方がスマートですね。(楽だし)


'--------------------------------------------------------
' Form
'--------------------------------------------------------
Private Sub Form_Load()
  Me.KeyPreview = True
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
  Call NextPrevFocus(KeyAscii)
End Sub

'--------------------------------------------------------
' Module
'--------------------------------------------------------
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Const KEYEVENTF_EXTENDEDKEY = &H1
Public Const KEYEVENTF_KEYUP = &H2

Public Const VK_TAB = &H9 '[TAB]
Public Const VK_SHIFT = &H10 '[Shift]

Sub NextPrevFocus(KeyAscii As Integer)
  Select Case KeyAscii
    Case vbKeyReturn
       Call keybd_event(VK_TAB, 0, 0, 0)
       Call keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0)
    Case vbKeyEscape
       Call keybd_event(VK_SHIFT, 0, 0, 0)
       Call keybd_event(VK_TAB, 0, 0, 0)
       Call keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0)
       Call keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0)
  End Select
End Sub


DownLoad vbtips110.lzh 2KB (VB6.0)