基本上,我的服务器会向客户端发送一个字符串,然后在客户端使用Dim data() As String = receivedString.Split("|"c)
对其进行分解。例如,一个字符串是MESSAGE|TestUser|This Is The Message
。当收到这个字符串时,我想做的是首先检查这个用户以前是否已经向这个客户端发送过消息(应该已经有一个显示当前"聊天"的窗口(,如果用户在追加之前发送了消息该文本表示一个富文本框。如果用户在创建新的"聊天窗口"实例之前没有发送消息,那么将来来自服务器的任何消息都会转到该窗口实例。
谢谢,Houlahan
Dim data() As String = message.Split("|"c)
Select Case data(0)
Case "MESSAGE"
Try
If conversations.ContainsKey(data(1)) Then
Dim convoWindow As ChatWindow
convoWindow = conversations.Item(data(1))
convoWindow.RichTextBox1.AppendText(data(2))
Else
conversations.Add(data(1), New ChatWindow())
Dim convoWindow As ChatWindow
convoWindow = conversations.Item(data(1))
convoWindow.Show()
convoWindow.RichTextBox1.AppendText(data(2))
End If
您可以通过多种方式来实现这一点。我首先想到的是创建一个Dictionary对象,该对象将您的TestUser
作为关键字与代表对话的Form
相关联。例如
conversations.Add(testUser, new FormConversation(...))
当收到消息时,你会参考记录你所有正在进行的对话的词典。
如果用户名中不存在密钥,请创建一个新表单,并将该用户连同对该表单的引用一起添加到字典中。如果确实存在密钥,则可以根据用户名从字典中提取该密钥,只需将该密钥放在前面并将消息传给它即可。