文本框的Enter事件代码设置为:
Dim canedit As Boolean
Dim r As Row = Tables("表A").Current
If r.DataRow.RowState = DataRowState.Added Then '新增行正常编辑
Return
End If
If QQClient.Ready = False Then '如果QQClient没有启动,则禁止编辑
PopMessage("必须启动QQClient,才能编辑此表数据!","提示",PopIconEnum.Infomation,5)
Else
Dim key As String = "表A:" & r("_Identify")
If tbrk.Contains(key) Then '如果 本人之前已经编辑此行,则正常编辑
canedit = True
Else '如果 本人之前没有编辑此行
Dim msg = QQClient.SendWait("?#" & Key & "#?",5) '向服务器发送请求编辑信息
If msg = "OK" Then '如果服务器返回OK
tbrk.Add(key) '在本地登记正在编辑此行
canedit = True
ElseIf msg > "" Then '否则显示服务器返回的信息,并取消编辑
PopMessage("无法编辑此行,因为:" & vbcrlf & msg ,"提示",PopIconEnum.Infomation,5)
Else '如果服务器没有返回信息,则取消编辑
PopMessage("因服务器无响应,无法编辑此行!" ,"提示",PopIconEnum.Infomation,5)
End If
End If
End If
Dim ctl As WinForm.Control = e.Sender
ctl.ReadOnly = IIF(canedit ,BooleanEnum.False,BooleanEnum.True )
可以把蓝色部分代码放到函数中,其它地方统一调用