111,126
社区成员
发帖
与我相关
我的任务
分享//发送信息
private void btnsend_Click(object sender, EventArgs e)
{
if (rtbSendInfo.Text == "")
{
return;
}
//建立内存流
MemoryStream ms = new MemoryStream();
ms.Position = 0;
//把当前的richtextbox内容包括图片和文本保存到流中
rtbSendInfo.SaveFile(ms, RichTextBoxStreamType.RichText);
//保存二进制流都是使用的参数,没有谁在代码中直接给出的。
string ttime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString();
string sql = "insert into messages (senderid,receiveid,messages,state,type,messagetime) values ('" + sendcid + "','" + rcid + "',@messages,'" + 1 + "','" + 0 + "','" + ttime + "')";
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.AddWithValue("@messages", ms.GetBuffer());
conn.Open();
int i = comm.ExecuteNonQuery();
conn.Close();
if (i == 1)
{
timer1.Start();
rtbShow.SelectAll();
rtbShow.Text += sendname + "\t" + ttime + "\n";
rtbShow.SelectionStart = rtbShow.TextLength;
rtbShow.SelectedRtf = rtbSendInfo.Rtf;
rtbShow.SelectionStart = rtbShow.TextLength;
rtbShow.ScrollToCaret();
rtbSendInfo.Text = "";
}
}//接收信息
private void timer1_Tick(object sender, EventArgs e)
{
//查询未读信息
string sql = "select * from messages where receiveid=@0 and type=@1";
DataTable dt = DataBaseHelper.ExecDataTable(sql, sendcid, 0);
//下面是读取
if(dt.Rows.Count>0)
{
foreach(DataRow row in dt.Rows)
{
string ttime = row["messagetime"].ToString();
if (row["senderid"].ToString() == rcid)
{
string sqll = "update messages set type=@0 where messagetime=@1";
int i = DataBaseHelper.ExecNoneQuery(sqll, "1", ttime);
if(i>0)
{
byte[] b = (byte[])(row["messages"]);
MemoryStream ms = new MemoryStream();
ms.Position = 0;
ms.Write(b, 0, b.Length);
ms.Position = 0;
timer1.Stop();
rtbShow.SelectionStart = rtbShow.TextLength;
rtbShow.ScrollToCaret();
rtbShow.SelectedText += "\n"+receivename + "\t" + ttime + "\n";
rtbShow.SelectionStart += rtbShow.TextLength;
rtbShow.ScrollToCaret();
rtbShow.LoadFile(ms, RichTextBoxStreamType.RichText);
rtbShow.SelectionStart = rtbShow.TextLength;
rtbShow.ScrollToCaret();
ms.Close();
}
}
}
}
}