2011-03-18 4 views
2

런타임에 RichTextBox에 텍스트를 삽입하려고 시도하고 있지만 그렇게하면 이전에 있던 모든 서식이 손실됩니다. 사이드 노트에C# : RichTextBox에 텍스트를 삽입하면 서식이 손실됩니다.

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

내를 RichTextBox의를 : 나는 "텍스트"의 property를 RichTextBox의 내 의 키를 이벤트라고 덮어 쓰기를하고 있습니다 때문에, 포맷이 손실 이해하는 것과

높이는 내용에 따라 런타임에 계산됩니다.

나는 RTB에 텍스트를 삽입 을 강요하고, 그렇지 않으면 컨텐츠가 제대로 즉, 그 크기 조정 (다음 표시되지 않을 것입니다 : 어떤 이유로 들어, RTB의 첫 번째 줄까지 스크롤 한 것으로 표시 만 할 수있는 것을 컨트롤이 초점을 잃으면 볼 수 있습니다 ... 참조 : C#: How to prevent a textbox' content from being scrolled up on Enter?).

이전 서식을 그대로 유지하면서 RichTextBox에 텍스트를 삽입 할 수있는 방법이 있습니까?

감사합니다. 도움을 주시면 감사하겠습니다.

+0

WPF 또는 WinForms? – Snowbear

+0

현재 WinForms를 사용하고 있습니다. –

답변

1

AppendText 대신에 ScrollToCaret을 시도해보십시오.

+0

답변 해 주셔서 감사합니다. 나는 그것을 시도했지만 RTB의 높이를 조정할 때 이상한 "스크롤 업"버그가 발생했습니다. 기본적으로 "삽입 (...)"메서드를 사용하는 것 이외의 텍스트를 추가하면 컨트롤에 포커스를 잃지 않는 한 RTB의 첫 번째 줄이 보이지 않게 위로 스크롤됩니다. –

+0

후에 다시 스크롤 할 수 없습니까? –

+0

프로그래밍 방식으로 다시 스크롤하지 않고 수동으로 다시 스크롤 할 수 있습니다. 사용자는 수동으로해야하는 것에 대해 불평하고있었습니다. 따라서 런타임에 직접 수행하는 방법을 찾는 이유가 무엇입니까? –

2

전체 텍스트 재설정 (Text = ...)으로 인해 문제가 발생했다고 생각합니다. 다음과 같은 것을 사용해보십시오 :

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

해답을 가져 주셔서 감사합니다. SelectedText와 AppendText는 당신과 마이크가 제안한 것처럼 작동하지만, 어떤 이유로 라인의 길이가 RTB의 너비를 초과 할 때 RTF 컨텐츠에 자동으로 추가 라인 (예 : \ r \ n)이 추가되어 첫 번째 사라질 줄. –

+0

'어떤 이유로'? 프로그래밍 방식으로가 아니라 일반적인 방법으로 텍스트를 richTextBox에 추가하면 어떻게됩니까? 나는 이것이 완전히 다른 문제라고 생각한다. – Snowbear

+0

예, 규칙적인 방식으로 추가 할 때도 발생합니다. 그리고 그것은 당신이 언급 한 것과는 다른 이슈입니다. 그래서 나는 당신의 대답과 Mike 's를 올바른 것으로 표시 할 것입니다. 감사. –

관련 문제