直到第二次单击(vb6),按钮事件才显示值
Posted
技术标签:
【中文标题】直到第二次单击(vb6),按钮事件才显示值【英文标题】:Button Event isn't displaying value until 2nd click (vb6) 【发布时间】:2015-07-13 19:36:51 【问题描述】:我在 vb6 中创建了一个 tcp 连接,以从秤上获取重量并在按下按钮后显示该重量。问题是直到第二次(第二次)单击按钮而不是第一次才显示重量。我在不同的位置设置了一个断点,第一次单击按钮时,它会将我带到那个断点,所以我知道事件正在按应有的方式触发,但是在第二次单击之前什么都没有显示。我做了很多研究,但似乎找不到任何有确切问题(或解决方案)的人。
Public tcpC As New Winsock
'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub CFixPicture_Close()
tcpC.Close
End Sub
Private Sub CFixPicture_Initialize()
tcpC.LocalPort = 0
tcpC.Connect "192.168.0.1", 8000
End Sub
Private Sub CommandButton1_click()
On Error GoTo errHandler
Dim strData As String
tcpC.SendData "S" & vbCrLf
tcpC.GetData strData
Text1.Caption = "Weight: " & strData
Exit Sub
errHandler:
MsgBox "error:" & Err.Description
End Sub
【问题讨论】:
您的 GetData 调用可能在获取任何数据之前执行。请参阅 DataArrival 事件。 我将 sub 的名称更改为 dataArrival 事件但仍然没有运气 【参考方案1】:我假设您的代码在表单中,而您只是声明了一个 Winsock 类型的新对象。我的代码使用关键字 WithEvents 声明了一个 Winsock 变量,以访问由 Winsock 对象引发的事件。您感兴趣的特定事件是 DataArrival。它在接收到数据时由 Winsock 控件触发。我将设置文本移至此事件。此外,您不能使用 WithEvents 和“As New”(您真的不想使用 As New),所以我在 CFixPicture_Initialize() 方法中设置属性之前创建了对象。最后,我添加了在关闭对象后将其设置为空。
Option Explicit
Private WithEvents tcpC As Winsock
Private Sub CFixPicture_Close()
tcpC.Close
Set tcpP = Nothing
End Sub
Private Sub CFixPicture_Initialize()
Set tcpC = New Winsock
tcpC.LocalPort = 0
tcpC.Connect "192.168.0.1", 8000
End Sub
Private Sub CommandButton1_click()
On Error GoTo errHandler
Dim strData As String
tcpC.SendData "S" & vbCrLf
'there is no data here yet - moved to the DataArrival event
'tcpC.GetData strData
'Text1.Caption = "Weight: " & strData
Exit Sub
errHandler:
MsgBox "error:" & Err.Description
End Sub
Private Sub tcpC_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
tcpC.GetData strData
Text1.Caption = "Weight: " & strData
End Sub
【讨论】:
太棒了!感谢您的帮助@jac。该按钮开始注册第一次点击。我唯一要提到的是我删除了 tcpc.close 命令,因为它向我抛出了错误 91。出于某种原因,tcp 连接已经自行关闭,所以它不喜欢我再次关闭它。谢谢!以上是关于直到第二次单击(vb6),按钮事件才显示值的主要内容,如果未能解决你的问题,请参考以下文章
SQL Reporting Services报告仅在第二次单击时加载