Visual Basic Tips


KeyUp,KeyDownイベントが思い通りに発生しない時は(API)


SSTabコントロールを貼り付けたフォームのKeyupイベントが二回発生してしまう。右揃えを行ったテキストボックスのKeyDownイベントで他のコントロールへSetFocusしても上手くいかない・・・って文章にしても解かりにくいですね。具体的には

こんなフォームがあったとしてテキストボックスのKeyDownイベントで
※テキストボックスのAlignmentプロパティは右揃え、MultilineプロパティはTrueに設定しておきます

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  
If KeyCode = vbKeyDown Then
    Text2.SetFocus
  
End If
End Sub

Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
  
If KeyCode = vbKeyDown Then
    Text1.SetFocus
  
End If
End Sub

こんな風にSetFocusしても上手く動作しません。そんな時は

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  
If KeyCode = vbKeyDown Then
    Text2.SetFocus
    
KeyCode = 0
  
End If
End Sub

Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
  
If KeyCode = vbKeyDown Then
    Text1.SetFocus
    
KeyCode = 0
  
End If
End Sub

としてやれば思い通りに動作します。結局、一回KeyDownイベントが発生したらKeyのイベントはもう無し!としてあげるのです。

 


DownLoad vbtips082.lzh 2KB (VB6.0)