窗体关闭时出现的问题,怪!!!!!sos可持续加分

goodxing 2001-07-20 04:11:16
简化我的问题如下:
Private Sub Timer1_Timer()
Dim counter As Long
MSComm1.InputLen = 13
MSComm1.InputMode = comInputModeText
。。。。。。。。。(此处略去一些正确的通讯初始化代码)
MSComm1.PortOpen = True
MSComm1.Output = myout
counter = Timer + 3
Do
If counter < Timer Then
MSComm1.PortOpen = False
Exit Sub
End If
DoEvents
Loop Until MSComm1.InBufferCount >= 13
myin = MSComm1.Input
。。。。。(略)
MSComm1.PortOpen = False
end sub
本代码运行正确,问题是我按下窗体的X来关此通讯界面时,DO。。LOOP 的循环未强行终止导致counter < Timer 成立执行MSComm1.PortOpen = False时,提示“端口未打开”
请问我如何在此前加一个怎样的判断来得知我已按了窗体的关闭钮从而跳过MSComm1.PortOpen = False而执行Exit Sub

...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodxing 2001-07-25
  • 打赏
  • 举报
回复
我懂了是DOEVENTS 的 缘故
yqh 2001-07-25
  • 打赏
  • 举报
回复
MSComm1打开为什么放在timer中,最好放在form初始化中
打开或关闭之前最好判一个MSComm1的状态
goodxing 2001-07-20
  • 打赏
  • 举报
回复
怎么没人回答??????555555555
goodxing 2001-07-20
  • 打赏
  • 举报
回复
我做的改动是:
Private Sub Form_Load()
closeflag = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
closeflag = True
Timer1.Enabled = False
End Sub
在DO。。。LOOP 中加
If closeflag = True Then
Timer1.Enabled = False
Exit Sub
End If
我用单句及断点跟踪时发现按关闭按钮后先执行Form_Unload过程又执行Form_load过程然后跳回
DO。。。。。。LOOP中由于Form_load过程的破坏问题如故
我给诸位的加分加成功了吗我怎么只见加分界面不见得分界面?
sumtec 2001-07-20
  • 打赏
  • 举报
回复
在form1_unload(或Terminate、QueryUnload)处加入 Timer1.Enabled=False
在Timer1_Timer处的if语句改成 If counter<Timer AND Timer1.Enabled then
即可.
natfit 2001-07-20
  • 打赏
  • 举报
回复
在form unload中加点东西如bclose=true
goodxing 2001-07-20
  • 打赏
  • 举报
回复
请大家帮忙有道理就给分,我可持续加分

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧