当我将form的keypreview为true时,
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 
     If KeyCode = vbKeyF1 Then 
         command1_click
    End Sub 
private sub command1_click
    text1.text =""
    text1.setfoucs
end sub
第一次装载窗体,光标在文本框里闪烁,没有问题
当运行完此代码后,光标却在文本框里不闪烁,无法输入。
帮帮忙这是怎么回事?为什么?

解决方案 »

  1.   

    Private Sub Form_Load()
                Me.KeyPreview = True
    End Sub
    看看可以吗?
      

  2.   

    你的KeyPreview 属性设置成为真 才会接受输入啊
    把上面的代码加入就可以了
      

  3.   

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
         If KeyCode = vbKeyF1 Then
             command1_click
             End If
        End Sub
    Private Sub command1_click()
        Text1.Text = ""
        Text1.SetFocus
    End Sub
    你用这个代码看看
    你if了以后end if都没有
      

  4.   

    对  还有aspower说的Text1.SetFocus
    这个才是光标
      

  5.   

    当我将form的keypreview为true时,
    他已经设置了
      

  6.   

    form的keypreview为true
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 
         If KeyCode = vbKeyF1 Then 
             command1_click
         end if
        End Sub 
    private sub command1_click
        text1.text =""
        text1.setfocus
    end sub
    我试过,代码没有问题了。可是第一次是没有问题,就是按了F1后,光标在文本框里不闪烁。
      

  7.   

    必须按一下其它的键,比如:ESC,这时光标才闪烁。
    能输入,我输入“12345678”,结果文本框里只出现“2345678”少了“1”不知道为什么光标不闪烁?
      

  8.   

    单独测试
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
         If KeyCode = vbKeyF1 Then
             command1_click
         End If
        End Sub
        
    Private Sub command1_click()
        Text1.Text = ""
        Text1.SetFocus
    End Sub
    是没有问题的
    应该还有其它的代码,否则不会出现此问题
      

  9.   

    Screen.MousePointer = vbHourglass
    Cn.BeginTrans '启动事务
       errno = SaveFiles
       Select Case errno
          Case -2147217864
           Do While errno = -2147217864
            errno = SaveFiles
            intdo = intdo + 1
            If intdo = 100 Then
             Cn.RollbackTrans  '回滚事务
             Screen.MousePointer = vbDefault
             IniScnA
             txtBarCode.SetFocus
             txtBarCode.Text = ""
             MsgBox "更新错误,发货不成功,请重试!! : " & Err.Number & Chr(13) & Chr(13) & Err.Description, vbExclamation, "更新有误"
             Exit Sub
            End If
          Loop
        Case 0
        Case Else
         Cn.RollbackTrans
         MsgBox "更新错误,发货不成功,请重试!! : " & Err.Number & Chr(13) & Chr(13) & Err.Description, vbExclamation, "更新有误"
         Exit Sub
    End Select
    Cn.CommitTrans '结束事务
    Screen.MousePointer = vbDefault
    IniScnA
    txtBarCode.Text = ""
    txtBarCode.SetFocus
    '***************************************************
    会不会这个问题与事务有关呢?
      

  10.   

    以上代码是command_click事件里的.
      

  11.   

    不知你IniScnA函数是么子内容,
    很有可能是与此函数有关
    最好还是单步执行看看有没有出错的语句还有就是
    你的Cn.BeginTrans '启动事务与Cn.CommitTrans '结束事务及Cn.RollbackTrans  '回滚事务之间似乎没有更新数据,为何要用此语句
      

  12.   


    txtBarCode.Text = "1"
    txtBarCode.Text = ""
    txtBarCode.SetFocus
    改成这样看下
    你说第一个字输入不进去很可能是有输入还在缓冲区的原因
    你强制刷一下看看
      

  13.   


    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    里面
    if...end if外面

    txtBarCode.SetFocus