Windows Forms에서 행을 최대 18 자로 최대 6 행을 사용하여 RichTextBox
을 만들어야합니다. RichTextBox
의 문제점은 매우 긴 단어를 쓸 때 두 행으로 표시되지만 한 행처럼 취급됩니다. 예를 들어 :RichTextBox에서 수동 단어 줄 바꾸기
이이 두 줄 텍스트입니다
icexpialidocious
supercalifragilist
입니다.
내 첫 번째 접근 방식은 RichTextBox
을 상속하고 OnTextChanged
을 재정의하는 자체 클래스를 만드는 것이 었습니다. 멋지게 끝났지 만 전 랩을 잊어 버렸습니다. 따라서 필자의 접근 방식에서는 단어 줄 바꿈을 구현했습니다.
알고리즘은 매우 간단합니다. 텍스트가 변경되면 '공백'및 '새 줄'문자로 나누십시오. 그 다음 행에 몇 개의 문자가 입력되었는지 세어보고 단어가있는 경우이 행에 입력합니다. 단어를위한 공간이 없으면 새로운 라인을 만듭니다.
그리고 성가신 부분 : 이제 해결 방법을 모르는 몇 가지 버그가 있습니다. 사용자가 18 자 길이의 단어를 작성했다고 가정 해 봅시다. 마지막 문자 다음에 커서가 있습니다. 그리고 지금 :
- Return 키를 눌러 항상 수동으로 줄 바꿈 문자를 만들 수 있습니다.이 줄 문자는 항상이 위치에 있어야합니다.
- 그는 공간을 눌러 새 단어 쓰기를 시작할 수 있습니다.
- 그는이 단어에 대해 계속해서 다른 문자를 쓸 수 있습니다.
각 시나리오에서 18 자의 긴 단어와 '새 줄'문자로 끝납니다. 나는 그가 어떻게하고 싶은지를 어떻게 감지 할 지 모른다. 그리고 사용자는 어디에서나 커서를 놓고 이전에 입력 한 텍스트를 편집 할 수 있습니다.
문자열을 상속하는 사용자 지정 문자열 클래스를 만들거나 입력 된 단어 목록을 유지할 수 있지만 구현이 어려워 코드가 읽을 수 없게됩니다.
아이디어를 더 잘 만드는 방법은 무엇입니까?
문자열에서 상속받을 수 없습니다 ... Google에서 비슷한 사례를 찾았습니까? –
내 실수. 나는 내 자신의 클래스에 권투 문자열에 대해 생각했다. 물론 Google에서 검색했습니다. 스택 오버플로에 대한 질문은 항상 문제를 해결할 때 제가하는 마지막 일입니다. –
@MarcinBigoraj에서 FlowDocument의 PageWidth를 설정하는 방법을 살펴 보았습니까? http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument.pagewidth.aspx 최대 행의 경우 얼마나 많은 개행 문자가 있는지 추적 할 수 있습니다. – ToastyMallows