2011-03-18 95 views
2

我想插入在运行时的文本在RichTextBox,但是当我这样做,所有以前存在的格式都将丢失。C#:在RichTextBox插入文本导致格式丢失

据我了解,该格式将丢失,因为我重写RichTextBox中的“文本”属性时,我按键响应事件被称为:

(...) 
Text = Text.Insert(SelectionStart, MyText); 
e.Handled = true; 

在一个侧面说明,我的RichTextBox的高度根据其内容在运行时计算。

我不得不在RTB插入文本,否则内容将无法正确显示以下的调整大小(即:出于某种原因,RTB的第一线似乎已滚动起来,只能一旦控制失去了重点就会被看到......见:C#: How to prevent a textbox' content from being scrolled up on Enter?)。

有什么办法来插入一个RichTextBox的文字,同时还保持以前所有的格式不变?

非常感谢您的帮助。

+0

WPF或WinForms的? – Snowbear 2011-03-18 21:50:07

+0

我目前使用WinForms。 – 2011-03-18 21:51:41

回答

1

尝试AppendText代替,其次是ScrollToCaret

+0

感谢您的回答。我尝试过,但仍然有调整RTB高度时出现的奇怪“向上滚动”错误。基本上,除了使用“插入(...)”方法以外,添加文本会导致RTB的第一行滚动出视图,除非我失去了对控件的注意力。 – 2011-03-18 21:47:27

+0

之后你不能重新向下滚动吗? – 2011-03-18 22:18:53

+0

我可以手动将其重新向下滚动,但不能以编程方式。用户抱怨不得不手动完成它,因此我试图找出一种在运行时直接执行的方法。 – 2011-03-18 22:23:17

2

我相信问题是由完全文本重置造成的(Text = ...)。尝试使用类似:

SelectionLength = 0; // not sure about this one 
SelectedText = MyText; 
+0

谢谢你的回答。 SelectedText和AppendText的工作方式与您和Mike建议的类似,但由于某种原因,每当行的长度超过RTB的宽度时,RTF内容中会自动添加一个新行(即:\ r \ n),导致第一行线消失。 – 2011-03-18 22:24:36

+0

'由于某种原因'?当您以常规方式将文本添加到richTextBox而不是以编程方式发生时,会发生这种情况吗?我相信这是完全不同的问题。 – Snowbear 2011-03-18 22:27:55

+0

是的,当它以常规方式添加时也会发生。这是你提到的一个不同的问题,所以我会标记你的答案,Mike的答案是正确的。谢谢。 – 2011-03-18 22:31:24

相关问题