我想编写一个应用程序,它将从源文件中复制的文本随机排序并粘贴到RichTextBox区域。
但是,有一个条件 - 格式化文本(某些单词以粗体显示,下划线等)。那有什么建议吗?应该怎么样?
我认为我应该使用RichTextBox.Rtf
或其他东西,但我真的是初学者,我感谢每一个提示或示例代码。
由于
答案 0 :(得分:0)
这项任务似乎并不复杂(如果我理解正确的话)。 将剪贴板放入字符串然后解析为数组 - 使用Split()。 然后确定你需要多少个randon事件并迭代每个单词;为每次迭代生成随机数(应该与事件数量相匹配),将该数字与其中一个事件相交,并将该情况应用于该特定单词。也许不是最有效的方法,但这就是我的想法
答案 1 :(得分:0)
这有点棘手。您可以像这样检索格式化的RTF文本行
string[] rtfLines = new string[richTextBox1.Lines.Length];
for (int i = 0; i < rtfLines.Length; i++) {
int start = richTextBox1.GetFirstCharIndexFromLine(i);
int length = richTextBox1.Lines[i].Length;
richTextBox1.Select(start, length);
rtfLines[i] = richTextBox1.SelectedRtf;
}
现在你可以像这样洗牌
var random = new Random();
rtfLines = rtfLines.OrderBy(s => random.NextDouble()).ToArray();
清除RichtTextBox
richTextBox1.Text = "";
最好以相反的顺序插入行,因为更容易选择文本的开头
// Insert the line which will be the last line.
richTextBox1.Select(0, 0);
richTextBox1.SelectedRtf = rtfLines[0];
// Prepend the other lines and add a line break.
for (int i = 1; i < rtfLines.Length; i++) {
richTextBox1.Select(0, 0);
// Replace the ending "}\r\n" with "\\par }\r\n". "\\par" is a line break.
richTextBox1.SelectedRtf =
rtfLines[i].Substring(0, rtfLines[i].Length - 3) + "\\par }\r\n";
}