在发生偶数时,如何自动更新文本框



好吧,我已经设置了一个事件处理程序,该事件处理程序在连接到计算机串行端口的设备串行端口将带有此代码的文本消息接收:

   Private Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)
    Dim rxString As String
    Dim index As Integer
    Dim newMsg As New SMSMessage
    RemoveHandler SMSPort.DataReceived, AddressOf DataReceivedHandler
    Thread.Sleep(100)
    rxString = SMSPort.ReadExisting()
    rxString = TrimCRLF(rxString)
    index = NewSMSIndex(rxString)
    If index > -1 Then
        newMsg = ReadSMS(index)
        If newMsg.Index > -1 Then
            SMS.Clear()
            SMS.Add("Index: " & newMsg.Index & vbCrLf)
            SMS.Add("Phone Number: " & newMsg.PhoneNum & vbCrLf)
            SMS.Add(newMsg.RxOrTx & ": " & newMsg.MessageDateTime & vbCrLf)
            SMS.Add("Message: " & newMsg.MessageText)
        End If
    End If
    AddHandler SMSPort.DataReceived, AddressOf DataReceivedHandler
End Sub

现在,这是一个与我的GUI分开的类的一部分,称为MainWindow,

基本上,我无法弄清楚如何获得文本框以在主窗口上使用我写在代码中的列表" SMS"的主窗口上更新。

我说的是我想要的:

列表更改时,执行任务:

列表中的每个元素TextBox.AppendText(Elem)下一个然后将文本框显示waht写入

如果我不误解这个问题,则可以使用事件实现这一目标。在课堂上声明您有SMS列表的活动,并在必要时提出活动:

Public Event SMSListChanged(ByVal someString As String)
Private Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)
    .....
    RaiseEvent SMSListChanged("Some message to display in MainWindow")
    .....
End Sub

然后在MainWindow中处理SMSListChanged事件:

Private WithEvents myOtherClass As New MyOtherClass
Private Sub DisplayMessage(ByVal message As String) Handles myOtherClass.SMSListChanged
    'TODO: update textbox with message string from parameter
End Sub

这种方法的优势是避免您的班级承担更新GUI的额外责任,因此可以使其符合某种级别的单一责任。

相关内容

  • 没有找到相关文章

最新更新