调用片段 if (MessageObjs != null)
{
foreach (MessageClass mc in MessageObjs)
{
InitShow(mc);
}
}
控件操作片段 private void InitShow(MessageClass message)
{
if (message.FromUserType == UserType.Manager)
{
int start = this.txtMessageShow.Text.LastIndexOf("\n") + 1;
this.txtMessageShow.Text += "(" + message.FromUserID + ")" + message.FromUserName
+ "(" + message.SendDataTime + ")" + "——说:" + "\r\n" + message.Message + "\r\n";
this.txtMessageShow.SelectionStart = start;
this.txtMessageShow.SelectionLength = txtMessageShow.Lines[txtMessageShow.Lines.Length - 3].Length;
this.txtMessageShow.SelectionColor = Color.Green;
this.txtMessageShow.SelectionLength = 0;
start = start + txtMessageShow.Lines[txtMessageShow.Lines.Length - 3].Length + 1;
this.txtMessageShow.SelectionStart = start;
this.txtMessageShow.SelectionLength = txtMessageShow.Lines[txtMessageShow.Lines.Length - 2].Length;
this.txtMessageShow.SelectionColor = Color.Black;
this.txtMessageShow.SelectionLength = 0;
}
}
如图:
没有达到预期的效果
设置的颜色只有最后一句起了作用求达到类似 QQ 聊天记录显示效果的解决方法!
{
foreach (MessageClass mc in MessageObjs)
{
InitShow(mc);
}
}
控件操作片段 private void InitShow(MessageClass message)
{
if (message.FromUserType == UserType.Manager)
{
int start = this.txtMessageShow.Text.LastIndexOf("\n") + 1;
this.txtMessageShow.Text += "(" + message.FromUserID + ")" + message.FromUserName
+ "(" + message.SendDataTime + ")" + "——说:" + "\r\n" + message.Message + "\r\n";
this.txtMessageShow.SelectionStart = start;
this.txtMessageShow.SelectionLength = txtMessageShow.Lines[txtMessageShow.Lines.Length - 3].Length;
this.txtMessageShow.SelectionColor = Color.Green;
this.txtMessageShow.SelectionLength = 0;
start = start + txtMessageShow.Lines[txtMessageShow.Lines.Length - 3].Length + 1;
this.txtMessageShow.SelectionStart = start;
this.txtMessageShow.SelectionLength = txtMessageShow.Lines[txtMessageShow.Lines.Length - 2].Length;
this.txtMessageShow.SelectionColor = Color.Black;
this.txtMessageShow.SelectionLength = 0;
}
}
如图:
没有达到预期的效果
设置的颜色只有最后一句起了作用求达到类似 QQ 聊天记录显示效果的解决方法!
重新给txtMessageShow赋值:
this.txtMessageShow.Text += "(" + message.FromUserID + ")" + message.FromUserName
+ "(" + message.SendDataTime + ")" + "——说:" + "\r\n" + message.Message + "\r\n";
每次重新赋值都把以前的值覆盖掉了,值都被你覆盖了,你设置的颜色哪里还有?
+ "(" + message.SendDataTime + ")" + "——说:" + "\r\n" + message.Message + "\r\n";
这个的全写是:
this.txtMessageShow.Text = this.txtMessageShow.Text + "(" + message.FromUserID + ")" + message.FromUserName
+ "(" + message.SendDataTime + ")" + "——说:" + "\r\n" + message.Message + "\r\n";
this.txtMessageShow.Text的取值不能把颜色一起取出来吧
2)设置SelectionLength不起任何作用,请用Select选择具体的范围
3)不要用+操作符来增加text,使用AppendText方法
string[] messages = { "a", "a-talk", "b", "b-talk" };
for(int i = 0; i < messages.Length; i++)
{
string msg = messages[i];
//Locate to last position
richTextBox1.Select(richTextBox1.Text.Length, 0);
//Append message
richTextBox1.AppendText(msg);
//Refresh rich text box selection
richTextBox1.Select(richTextBox1.SelectionStart, msg.Length);
//Assign selection fore color
richTextBox1.SelectionColor = i % 2 == 0 ? Color.Green : Color.Black;
//Append new line
richTextBox1.AppendText(Environment.NewLine);
}
//Locate to last position
txtMessageShow.Select(txtMessageShow.Text.Length, 0);
//Append message
txtMessageShow.AppendText(user);
//Refresh rich text box selection
txtMessageShow.Select(txtMessageShow.SelectionStart - user.Length, user.Length);
//Assign selection fore color
txtMessageShow.SelectionColor = Color.Green;
//Append new line
txtMessageShow.AppendText(Environment.NewLine);
string meg = message.Message;
//Locate to last position
txtMessageShow.Select(txtMessageShow.Text.Length, 0);
//Append message
txtMessageShow.AppendText(meg);
//Refresh rich text box selection
txtMessageShow.Select(txtMessageShow.SelectionStart - meg.Length, meg.Length);
//Assign selection fore color
txtMessageShow.SelectionColor = Color.Black;
//Append new line
txtMessageShow.AppendText(Environment.NewLine);你的程序有BUG修改了一下 成功了 多谢