C#:在RichTextBox中插入文本会导致格式丢失

C#:在RichTextBox中插入文本会导致格式丢失,c#,formatting,insert,richtextbox,C#,Formatting,Insert,Richtextbox,我试图在运行时在RichTextBox中插入文本,但当我这样做时,以前存在的所有格式都将丢失 据我所知,格式已丢失,因为调用我的KeyPress事件时,我正在覆盖RichTextBox的“Text”属性: (...) Text = Text.Insert(SelectionStart, MyText); e.Handled = true; 另一方面,我的RichTextBox的高度是在运行时根据其内容计算的 我被迫在RTB中插入文本,否则内容在其大小调整后将无法正确显示(即:由于某种原因,RT

我试图在运行时在RichTextBox中插入文本,但当我这样做时,以前存在的所有格式都将丢失

据我所知,格式已丢失,因为调用我的KeyPress事件时,我正在覆盖RichTextBox的“Text”属性:

(...)
Text = Text.Insert(SelectionStart, MyText);
e.Handled = true;
另一方面,我的RichTextBox的高度是在运行时根据其内容计算的

我被迫在RTB中插入文本,否则内容在其大小调整后将无法正确显示(即:由于某种原因,RTB的第一行似乎已向上滚动,并且只有在控件失去焦点后才能看到…请参阅:)

有没有办法在RichTextBox中插入文本,同时保持所有以前的格式不变


谢谢,非常感谢您的帮助。

请尝试,然后是。

我相信问题是由完全文本重置(
text=…
)引起的。尝试使用以下方法:

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

谢谢你的回答。我试过了,但是我仍然有一个奇怪的“向上滚动”错误,它是在调整RTB高度时出现的。基本上,除了使用“Insert(…)”方法之外,添加文本会导致RTB的第一行被向上滚动到视图之外,除非我在控件上失去焦点。之后不能再向下滚动?我可以手动重新向下滚动,但不能以编程方式。用户抱怨必须手动执行,因此我试图找出一种在运行时直接执行的方法。当然,使用ScrollToCaret:谢谢,它在第二次调用时工作,但在第一次调用时不工作,因为某些原因。。。不过,总比没有强:)我目前正在使用WinForms。谢谢你的回答。SelectedText和AppendText确实像您和Mike建议的那样工作,但由于某些原因,每次行的长度超过RTB的宽度时,会自动在RTF内容中添加一个额外的新行(即:\r\n),导致第一行消失。
由于某种原因。
?当您以常规方式(而非编程方式)向richTextBox添加文本时,是否会发生这种情况?我相信这是完全不同的问题。是的,当以常规方式添加它时也会发生这种情况。正如你提到的,这是一个不同的问题,所以我会记下你的答案,迈克的答案是正确的。谢谢。@Hussein,签出此属性谢谢Snowbear,我尝试禁用文字包装,但这使文本框无法正常工作(即:我只会有一行)。