【发布时间】:2016-10-17 00:04:17
【问题描述】:
我正在尝试制作一个简单的所见即所得编辑器。我发现格式化rtb非常困难。 它应该格式化基本的东西,如粗体、斜体、着色(和混合)。
到目前为止我发现和尝试了什么:
private void boldButton_Click(object sender, EventArgs e)
{
int start = rtb.SelectionStart;
int length = rtb.SelectionLength;
for (int i = start, max = start + length; i < max; ++i)
{
rtb.Select(i, 1);
rtb.SelectionFont = new Font(rtb.Font, rtb.SelectionFont.Style | FontStyle.Bold);
}
rtb.SelectionStart = start;
rtb.SelectionLength = length;
rtb.Focus();
}
rtb = 富文本框。
这按预期工作,但速度非常慢。 我也找到了直接使用和格式化 RTF 的想法,但是格式似乎太复杂而且很容易出错。 我希望这是一个更好的解决方案。
谢谢。
【问题讨论】:
-
请定义“慢”,以及这种慢发生的位置。当你按下粗体按钮时,应用程序是否突然变得迟钝?
-
使用 2^14 大约需要 2.4212091 秒。用 2^15 -> 4.973971 秒。对我来说似乎很慢。我的预期是
-
您必须关闭绘图,直到您完成循环中的所有内容。见RichTextBox BeginUpdate() EndUpdate() Extension Methods Not Working
-
为什么一次只格式化一个字符???整个循环是不必要的!删除它,只保留第二行!
-
我在某处读到,如果字符混合了字体和样式,则一步将无法完成。但我从来没有为自己尝试过。谢谢你的回答,我明天试试。
标签: c# formatting richtextbox