public void AddMessage(DateTime dt, MsgType type, string from, string msg) { string col; switch (type) { case MsgType.Incoming: col = @"{\colortbl ;\red192\green80\blue77;}"; // Color.FromArgb(192, 080, 077); break; case MsgType.Outcoming: col = @"{\colortbl ;\red79\green129\blue189;}"; // Color.FromArgb(079, 129, 189); break; case MsgType.System: col = @"{\colortbl ;\red135\green157\blue059;}"; // Color.FromArgb(135, 157, 059); break; default: col = ""; //Color.Gray; break; } var sdt = dt.ToString("[HH:mm:ss]"); // [HH:mm:ss dd/MM/yy] var sb = new StringBuilder(); sb.Append(@"{\rtf\ansi "); sb.Append(col); sb.Append(@"{\b"); { sb.Append(@"{\cf1"); { RtfUtil.EscapeString(sb, from); sb.Append(' '); RtfUtil.EscapeString(sb, sdt); } sb.Append('}'); } sb.Append(@"}\line "); RtfUtil.EscapeString(sb, msg); sb.Append(@"\line\line}"); var scrollPos = rtbHistory.GetScrollPosition().Y + rtbHistory.ClientSize.Height; var maxScrollPos = rtbHistory.GetMaxScrollPosition(); rtbHistory.AppendRtf(sb.ToString()); if (scrollPos >= maxScrollPos) { rtbHistory.ScrollToEnd(); } }
/// <summary> /// Converts an RTF string to plain text /// </summary> /// <param name="contents"></param> /// <returns></returns> public static string ToPlainText(string contents) { if (String.IsNullOrEmpty(contents)) { return(String.Empty); } if (!contents.StartsWith("{\\rtf1")) { return(contents); } if (!RtfUtil.Rtf2Text(contents, out contents)) { return(String.Empty); } return(contents); }