有沒有什麼辦法可以在winforms中排序行richtextbox保存RTF格式?在winforms中排序richtextbox保留RTF格式
var lines = edit.Lines.OrderBy(s => s);
edit.Lines = lines.ToArray();
做得很好,但很明顯,失去了任何RTF格式。
我有稍微改變TAW的片段: 1.添加「獨特」可能打破的第一行格式化 2.除了「\看齊」的標籤也有「\ PARD」
這裏是一個段(再次感謝TAW!):
private void cmdSort_Click(object sender, EventArgs e)
{
const string PARD = "\\pard";
var pard = Guid.NewGuid().ToString();
var pos1 = edit.Rtf.IndexOf(PARD, StringComparison.Ordinal) + PARD.Length;
if (pos1 < 0) return;
var header = edit.Rtf.Substring(0, pos1);
var body = edit.Rtf.Substring(pos1);
body = body.Replace("\\pard", pard);
var lines = body.Split(new[] { "\\par" }, StringSplitOptions.None);
var lastFormat = "";
var sb = new StringBuilder();
var rtfLines = new SortedList<string, string>();
foreach (var line in lines)
{
var ln = line.Replace(pard, "\\pard");
var temp = ln.Replace("\r\n", "").Trim();
if (temp.Length > 0 && temp[0] != '\\')
{
rtfLines.Add(temp.Trim(), lastFormat + " " + ln);
}
else
{
var pos2 = temp.IndexOf(' ');
if (pos2 < 0)
{
rtfLines.Add(temp.Trim(), ln);
}
else
{
rtfLines.Add(temp.Substring(pos2).Trim(), ln);
lastFormat = temp.Substring(0, pos2);
}
}
}
foreach (var key in rtfLines.Keys.Where(key => key != "}"))
{
sb.Append(rtfLines[key] + "\\par");
}
edit.Rtf = header + sb;
}
真的看起來像開始,謝謝!如果我可以 - 我沒有足夠的聲望,我檢查了這個功能是否有用:( – dedpichto
檢查一下,如果它確實對您有用,您可以'接受'它作爲答案。要做到這一點,您不需要任何聲譽;事實上這樣做會讓你獲益,我想兩點。 – TaW