2016-11-20 4 views
8

따라서 모노 폰트 글꼴이 있고 각 줄마다 동일한 문자 수를 가져야합니다 (아래에 표시) RichTextBox이 있습니다. 이렇게하려면 상자에 입력하는 문자열에 x자를 매입 한 후 \n 개행 문자를 삽입해야합니다.TextPointers로 선택할 때 줄 바꿈 문자를 강조 표시하지 마십시오.

또한 커서가 화살표 키를 누른 채로 이동하여 개별 문자를 선택하는 알고리즘을 사용할 수 있습니다. 커서가 상자의 단어를 포함하고 있으면 단어 전체가 강조 표시됩니다.

문제점 : 단어가 여러 줄에 걸쳐있을 때 첫 줄의 마지막 문자 뒤에 공백이 오는데, 이는 \n 문자로 인한 것입니다.

RichTextBox.Selection.Select()은이 공백을 강조 표시하지 않으려면 어떻게합니까? 구문 분석 할 때 문자 선택을 제거 할 수 있지만이 빈 공간을 강조 표시 할 수 있어야합니다.

편집 : 받아 들일 수있는 대안은 개행을 필요 없다는 것입니다. 마찬가지로, RichTextBox을 수정하여 각 줄마다 항상 12자를 갖도록하지만, 창의 크기를 조정하기 쉽도록 유지하는 것이 이상적이지 않습니다.

업데이트 : XAML 내의 텍스트 열 너비를 줄이면 가장자리를 넘나 드는 강조의 크기는 줄어들지 만 완전히 제거되지는 않은 것으로 보입니다. 텍스트를 줄 바꿈하지 않고 더 이상 너비를 줄일 수 없습니다.

Example of Problem

+0

과 비슷한 무언가가 : 당신은 어떻게 특정 캐리지 리턴 출력 길이를 제한 할 수 있다는 것을 알고 당신은 옆에있는 선택에 걸쳐 필요 또는 텍스트의 일부인 캐리지 리턴입니다.이 경우 하이라이트를 확장하지 않을 수도 있습니다. –

+0

텍스트 상자에 맞추기 전에 캐리지 리턴과 줄 바꿈을 원본 텍스트에서 스트라이프 아웃합니까? –

+0

아니요. 원본 텍스트는 하나의 인접한 문자열입니다. 나는 12 문자마다'\ r'을 덧붙인다. – Airhead

답변

4

나는 문제가 구체적으로 \n 문자 관련이없는 것으로 파악했다. 주위 재생과 열의 너비를 변경하면 나쁜 강조 표시된 영역의 폭에 효과가 있다고 몰래 후

:

나는 아직도 원인을 완전히 모르겠지만, 이런 식으로 고정 나는 그것을 줄이려고 노력했다. 문제는 텍스트가 줄 바꿈 된 원인입니다.

내가 알기 론, RichTextBox의 WordWrap을 사용 중지하겠습니까? 잘못된. WPF를 사용하면이 기능을 사용 중지 할 수 없습니다.

WordWrap을 사용하지 않도록 설정하는 방법이 필요했기 때문에 일부 읽은 후 FlowDocumentWidth 속성을 매우 큰 숫자로 설정하여 텍스트를 바꿀 수 없음을 확인했습니다. 이렇게하기 위해, 나는 스크롤 바를 가야만했다.

그렇다면 단어 랩을 사용하지 않도록 설정했기 때문에 나쁘지 않은 공간이 보이지 않을 때까지 RichTextBox의 너비를 계속 줄일 수있었습니다.

그래서 문제가 해결되었지만 여전히 한 가지 질문이 남아 있습니다. Microsoft가 나를 왜 싫어합니까?

+0

Windows의 줄 끝이'\ r \ n'이 아니라'\ r'이 아니라'\ n'이 아니라면'Environment.NewLine'을 사용하여 줄의 단어를 구분해야합니다. 아무도 당신을 싫어하지 않고, 아무 것도없이 문제를 만들었습니다. – VMAtm

+0

두 문자를 모두 사용하면 문제가 계속 발생하는지 확인할 수 있습니다. 그것은 내가 원래 사용했던 것입니다. – Airhead

-1

'\ n'으로 단어를 분할 할 수 있습니까? 그런 다음 각 분할을 반복하여 RichTextBox.Selection.Select()에 전달합니다.

나는이 새로운 라인 (캐리지 리턴) 하나의 주요 문제를 볼 this