Private Sub Command1_Click()
''''''''''''''''''''''省略若干代码
'这里我想得到自己输入的字符,字符串长度必须为6
'方法1
thestr = InputBox("请输入6个字母") '但这种情况输入后,还要点确认键,麻烦!
MsgBox thestr'方法2 用 Do Loop
Do Until Len(Text1.Text) = 6
DoEvents
Loop
thestr = Text1.Text  '但这种方法很占cpu,不可取
MsgBox thestr
'方法3 虽然还有Text1_Change()事件,但这种方法不适合我的程序'这里怎么实现,等待Text1.Text输入,且长度为6。(类似方法2,但不占cpu, InputBox就不占cpu),然后再执行下面其他的代码''''''''''''''''''''''这里还有若干代码End Sub 

解决方案 »

  1.   

    你的编程思想就不对。对于GUI下面的多任务交互,不应该设计成单流程的代码,而应该使用事件回调。
    所以应该尽量设计自己的程序结构去使用Text_Change这样的事件来触发执行。如果是Java或者.net下面倒可以使用多线程来完成你的想法,但是VB6对多线程的支持极其差,所以还是算了。
    如果你硬要那么搞,也倒是有一个简洁的方法:
    Do Until Len(Text1.Text) = 6
      DoEvents
      Sleep 5  '这里加入一个Sleep,让当前线程休眠一小会,从而让出CPU资源
    Loop
    thestr = Text1.Text 
    MsgBox thestr
      

  2.   

    如果Text1.Text没有任何输入,也就是没去触发它。我就把窗口关闭了,但此时程序并没有正在的关闭,也许还在那循环吧!该怎么处理
      

  3.   

    就用chang事件,判断if Len(Text1.Text)=6 then
       ......
    end if可以先设text1最大输入maxlenth为6
      

  4.   

    还有人说 
    新建窗体 然后以模式窗体方式show 确定的时候判断就可以,类似inputbox调用。
    但我用 Form2.show,的时候,后面的代码也执行了,怎么实现想inputbox那样,让后面的代码等待它的返回值
      

  5.   

    Private Sub Form_Load()
       Text1.MaxLength = 6
       
    End SubPrivate Sub Text1_LostFocus()
       If Len(Text1) < 6 Then Text1.SetFocus
    End Sub