用其他线程来关闭,或者用timer

解决方案 »

  1.   

    一用就出问题啊!
    麻烦大家看一下下面的代码:在oncomm事件中关闭模态窗口,//moduPublic tsm As String
    Public Function Getcomm() As String
      Dim ft As New Frmcomm
      ft.Show vbModal
      Getcomm = tsm
    End Function
     //-----------form
    Private Sub setcomm()
      MSComm1.CommPort = 2 '选用COM2串行口
      MSComm1.Settings = "9600,N,8,1" '波特率9600,无奇偶校验位,8位数据位1位停止位
      MSComm1.InputLen = 0 'Input将读取接收缓冲区的全部内容
      MSComm1.RThreshold = 9
      MSComm1.PortOpen = True '打开通信口
      MSComm1.OutBufferCount = 0 '清除接收缓冲区数据
    End SubPrivate Sub Form_Load()
      setcomm
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      MSComm1.PortOpen = False
      tsm = Trim(Text1.Text)
    End SubPrivate Sub MSComm1_OnComm()
      With MSComm1
        Select Case .CommEvent  '判断MSComm1通信事件
            Case comEvReceive '收到Rthreshold个字节产生的接收事件
              Text1.Text = .Input
        
    ////////////          
              Unload Me '出错,这里怎么写关闭窗口
    /////////////
        End Select
      End With
    End Sub
      

  2.   

    不大可能吧,可以看一下源代码吗?
    [email protected]
      

  3.   

    把 unload me 改为call close_win
    去掉form_unload函数
    function  close_win()
      MSComm1.PortOpen = False
      tsm = Trim(Text1.Text)
      unload me
    end fun
      

  4.   

    不要在事件OnComm里写,转移到别的事件里试一下!
      

  5.   

    现在没办法试,要下午才行。
    源码在上面啊!就是GetComm来获得条形码输入。
    还有其它的办法吗?????
      

  6.   

    不明白你具体要干什么,既然都已经把条形码读出来了为什么要unload me
      

  7.   

    因为设备是串口的,
    我做了一个类似InputBox的function getcomm 来获取条形码。
    代码如上,所以要unload me.
    有什么更好的方法没有?
      

  8.   

    程序有很多地方要输入条码,因此把它做成了一个Fun.
    请大家多提提意见!!!