该 textbox 名称为 txt0 , 激发两个事件: txt0_Change() txt0_Validate(Cancel As Boolean)主要想实现如下功能:当txt0中输入的字符数等于3时,则输入焦点跳到txt0后面的textbox控件txt1里,并且在txt0失去焦点时对txt0输入的内容进行效验(比如3位字符必须是数字等等)。我将效验放到 _Validate事件 中而在 _Change 中有如下内容:Private Sub txt0_Change()    If Len(Me.txt0.Text) = 3 Then
        Me.txt1.SetFocus
    End IfEnd Sub现在问题是 Me.txt1.SetFocus 执行后没有激活 txt0_Validate 事件,请问该如何改写代码使其激活 _Validate 事件?(强调 : 最好只用以上2个事件,而不用_LostFocus 之类的事件!)

解决方案 »

  1.   

    If Len(Me.Txt0.Text) = 3 Then
            'Me.Txt1.SetFocus
            SendKeys "{Tab}"
        End If
      

  2.   

    Private Sub txt0_Change()
        If Len(Me.txt0.Text) = 3 Then
            Call txt0_Validate(False)
            Me.txt1.SetFocus
        End If
    End Sub
      

  3.   

    to scmail81(夕阳の纸飞机) 
    你的方法可行,谢谢to chewinggum(口香糖·第二次减肥计划执行中) 
    你的方法不能阻止输入焦点移到txt1中,但还是谢谢,我也想过这个方法,呵呵。
      

  4.   

    将校验规则全部移到 Validate 事件中比较合理。
      

  5.   

    将校验规则全部移到 Validate 事件中比较合理。
      

  6.   

    将校验规则全部移到 Validate 事件中比较合理。
      

  7.   

    将校验规则全部移到 Validate 事件中比较合理。
      

  8.   

    TNND,刚才 CSDN 报超时,结果还是重复回复了。