Private Sub Form_Load()
Me.KeyPreview = True
End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode = vbKey1 Or KeyCode = vbKeyNumpad1
Case Check1.Value = 0
If Check1.Enabled = True Then Check1.Value = 1
If Timer1.Enabled = True Then Timer1.Enabled = False
Case XpCheckBox1.Value = 1
If Check1.Enabled = True Then Check1.Value = 0
If Timer1.Enabled = True Then Timer1.Enabled = False
End Select
End Sub以上是我用键盘事件来响应一个复选框控件和TIMER控件
问题是我按下了除了"1"以外的按键竟然也会相应了次段代码中的TIMER控键(比如说按了"2"或者"3".....)
比如我按了"3"键 虽然Check1没有变化,但是Timer.Enabled却=False了!
请问这是什么原因?

解决方案 »

  1.   

    上面的代码我写错了
    以现在的为准
    请高手帮忙!谢谢
    Private Sub Form_Load() 
    Me.KeyPreview = True 
    End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 
    Select Case KeyCode = vbKey1 Or KeyCode = vbKeyNumpad1 
    Case Check1.Value = 0 
    If Check1.Enabled = True Then Check1.Value = 1 
    If Timer1.Enabled = True Then Timer1.Enabled = False 
    Case Check1.Value =   1 
    If Check1.Enabled = True Then Check1.Value = 0
    If Timer1.Enabled = True Then Timer1.Enabled = False 
    End Select 
    End Sub
      

  2.   

    select case被楼主这样的用法,还是头一次见。请参考select case语句的语法:Select Case testexpression
       [Case expressionlist-n
          [statements-n]] . . .
       [Case Else expressionlist-n
          [elsestatements-n]]
    End Select
      

  3.   


    Private Sub Form_KeyPress(KeyAscii As Integer)
        If KeyAscii = 49 Then
            If Check1.Value = 0 Then
                If Check1.Enabled = True Then Check1.Value = 1
                If Timer1.Enabled = True Then Timer1.Enabled = False
            ElseIf XpCheckBox1.Value = 1 Then
                If Check1.Enabled = True Then Check1.Value = 0
                If Timer1.Enabled = True Then Timer1.Enabled = False
            End If
        End If
    End SubPrivate Sub Form_Load()
        Me.KeyPreview = True
    End Sub
      

  4.   

    感谢4楼朋友!
    你的代码测试通过
    不过我用的是KeyDown事件
    所以应该是
    If KeyCode = 49 Then
    ..............
    ..............
    .............
    ..............
      

  5.   

    还一个问题!
    按照4楼的方法
    如果我想在判断Check1.Enabled是否为"真"的情况再来执行If Timer1.Enabled = True Then Timer1.Enabled = False 又应该怎么写?
    呵呵
    问题多多
      

  6.   

    Private Sub Form_KeyPress(KeyAscii As Integer)
        If KeyAscii = 49 Then
            If Check1.Value = 0 Then
                If Check1.Enabled = True Then
                    Check1.Value = 1
                    If Timer1.Enabled = True Then Timer1.Enabled = False
                End If
            ElseIf Check1.Value = 1 Then
                If Check1.Enabled = True Then
                    Check1.Value = 0
                    If Timer1.Enabled = True Then Timer1.Enabled = False
                End If
            End If
        End If
    End SubPrivate Sub Form_Load()
        Me.KeyPreview = True
    End Sub这样写可以吗??????