新手请教,怎么实时保存聊天记录并调用文本框显示?
											
	
		
			
		
	
我想要像腾讯QQ在聊天的时候实时把聊天记录(信息不重复)保存起来,在需要查看的时候,单击聊天记录按钮就可以在右边文本框中显示保存的聊天记录(希望能查看到每次聊天的记录)!
请问大家,要怎么实现?
 程序代码:
程序代码: private void button_Send_Click(object sender, EventArgs e)
        {
            IPAddress ip = IPAddress.Parse(Publec_Class.ServerIP);//服务器端的IP地址
            string port = Publec_Class.ServerPort;//端口号
            string revid = ((this.Tag as TreeNode).Tag as ClassUserInfo).UserID;//接收ID号
            string sid = Publec_Class.UserID;//发送ID
            string msgid = Guid.NewGuid().ToString();//设置全局惟一标识
            byte[] data = Encoding.Unicode.GetBytes(rich_Input.Rtf);//将当前要发送的信息转换成二进制流
            ClassMsg msg = new ClassMsg();
            msg.sendKind = SendKind.SendMsg;//发送的消息
            msg.msgCommand = MsgCommand.SendToOne;//发送的是单用户信息
            msg.SID = sid;//发送ID
            msg.RID = revid;//接收ID
            msg.Data = data;//发送的信息
            msg.msgID = msgid;
            if (data.Length <= 1024)//如果发送信息的长度小于等于1024
            {
                msg.sendState = SendState.Single;
                //将信息直接发送给远程客户端
                udpsocket.Send(ip, Convert.ToInt32(port), new ClassSerializers().SerializeBinary(msg).ToArray());
            }
            else
            {
                ClassMsg start = new ClassMsg();
                start.sendKind = SendKind.SendMsg;
                start.sendState = SendState.Start;//文件发送开始命令
                start.msgCommand = MsgCommand.SendToOne;//发送单用户命令
                start.SID = sid;
                start.RID = revid;
                start.Data = Encoding.Unicode.GetBytes("");
                start.msgID = msgid;
                udpsocket.Send(ip, Convert.ToInt32(port), new ClassSerializers().SerializeBinary(start).ToArray());
                MemoryStream stream = new MemoryStream(data);//将二进制流存储到内存流中
                int sendlen = 1024; //设置文件每块发送的长度
                long sunlen = (stream.Length);//整个文件的大小
                int offset = 0;//设置文件发送的起始位置
                while (sunlen > 0)  //分流发送
                {
                    sendlen = 1024;
                    if (sunlen <= sendlen)
                        sendlen = Convert.ToInt32(sunlen);
                    byte[] msgdata = new byte[sendlen];
                    stream.Read(msgdata, offset, sendlen);//读取要发送的字节块
                    msg.sendState = SendState.Sending;//发送状态为文件发送中
                    msg.Data = msgdata;
                    udpsocket.Send(ip, Convert.ToInt32(port), new ClassSerializers().SerializeBinary(msg).ToArray());//发送当前块的信息
                    sunlen = sunlen - sendlen;//记录下一块的起始位置
                }
                ClassMsg end = new ClassMsg();
                end.sendKind = SendKind.SendMsg;
                end.sendState = SendState.End;//文件发送结束命令
                end.msgCommand = MsgCommand.SendToOne;
                end.SID = sid;
                end.RID = revid;
                end.Data = Encoding.Unicode.GetBytes("");
                end.msgID = msgid;
                udpsocket.Send(ip, Convert.ToInt32(port), new ClassSerializers().SerializeBinary(end).ToArray());//发送信息,通知文件发送结束
                string dir = System.Environment.CurrentDirectory;
                dir = dir.Substring(0, dir.Length - 9);
                pictureBox1.Load(dir + @"Image\QQ12.jpg");
            }
            Rich_Out.SelectionStart = 0;//将文本的起始点设为0
            Rich_Out.AppendText(Publec_Class.UserName);//将当前用户名添加到文本框中
            Rich_Out.AppendText("  "+ DateTime.Now.ToString());//将当前发送的时间添加到文本框中
            Rich_Out.AppendText("\r\n");//换行回车
            Rich_Out.SelectedRtf = rich_Input.Rtf;//将发送信息添加到接收文本框中
            rich_Input.Clear();//清空发送文本框
        }这是我发送消息模块。										
					
	
 
											







