当前位置:编程学习 > VB >>

求助 vb等待文本框的输入!

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  --------------------编程问答-------------------- 你的编程思想就不对。对于GUI下面的多任务交互,不应该设计成单流程的代码,而应该使用事件回调。
所以应该尽量设计自己的程序结构去使用Text_Change这样的事件来触发执行。

如果是Java或者.net下面倒可以使用多线程来完成你的想法,但是VB6对多线程的支持极其差,所以还是算了。


如果你硬要那么搞,也倒是有一个简洁的方法:
Do Until Len(Text1.Text) = 6
  DoEvents
  Sleep 5  '这里加入一个Sleep,让当前线程休眠一小会,从而让出CPU资源
Loop
thestr = Text1.Text 
MsgBox thestr

--------------------编程问答-------------------- 不知道楼主在怎么想,友情Up............
--------------------编程问答-------------------- 如果Text1.Text没有任何输入,也就是没去触发它。我就把窗口关闭了,但此时程序并没有正在的关闭,也许还在那循环吧!该怎么处理 --------------------编程问答-------------------- 就用chang事件,判断

if Len(Text1.Text)=6 then
   ......
end if

可以先设text1最大输入maxlenth为6 --------------------编程问答-------------------- 还有人说 
新建窗体 然后以模式窗体方式show 确定的时候判断就可以,类似inputbox调用。
但我用 Form2.show,的时候,后面的代码也执行了,怎么实现想inputbox那样,让后面的代码等待它的返回值 --------------------编程问答-------------------- form2.show 1
--------------------编程问答-------------------- Private Sub Form_Load()
   Text1.MaxLength = 6
   
End Sub

Private Sub Text1_LostFocus()
   If Len(Text1) < 6 Then Text1.SetFocus
End Sub
--------------------编程问答-------------------- 同意7楼的
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,