2012-06-23 1 views
2

편집기의 PreviewKeyDown 이벤트를 처리 한 다음 KeyEventArgs의 e.Handled를 true로 설정하면 입력을 모두 비활성화 할 수 있습니다.AvalonEdit에서 텍스트가 업데이트되지 않도록 방지

그러나 텍스트를 수정 한 후 문서 텍스트가 업데이트되지 않도록하는 방법을 알아 내려고하고 있습니다. 그래서처럼 Document.Changing 이벤트를 처리 할 : 문서 편집기 내 AvalonEdit 편집기입니다

textEditor.Document.Changing += Document_Changing; 

. 함수에서 수정중인 텍스트를 검색하고 싶습니다.

private void Document_Changing(object sender, DocumentChangeEventArgs e) 

다음에 기반하여 계산을 수행합니다. 그러나 텍스트를 처리하기 전에 편집기에서 텍스트를 업데이트하고 싶지 않습니다. Document_Changing에서 비동기 처리 중 일부를 수행하고 있으며 작업이 끝나면 다른 이벤트를 시작하고 업데이트 만하고 싶습니다. 시각적 인 업데이트 만 사용하지 않고 문서 전체를 업데이트하고 싶지 않습니다.

키보드 관련 이벤트를 처리 할 때 입력을 방지하는 것과 비슷한 방법으로이 업데이트를 비활성화 할 수 있습니까?

당신은 입력에서 사용자를 방지하기 위해 textEditor.TextArea.TextEntering 이벤트를 사용할 수있는 사전

답변

5

에 감사드립니다. 그러나이 이벤트는 입력에만 사용됩니다. 현재 다른 작업 (예 : 잘라 내기/붙여 넣기/끌기)은 편집기 이벤트를 발생시키지 않습니다 (문서 이벤트 만이 시점에서 취소하기에는 너무 늦었습니다).

또 다른 옵션은 텍스트를 읽기 전용으로 표시하기 위해 IReadOnlySectionProvider을 구현하는 것입니다. 이것은 텍스트 입력과 클립 보드 작업 모두에서 작동하며, 캐럿이 읽기 전용 섹션 안에있을 때 '붙여 넣기'메뉴 명령을 비활성화합니다. TextSegmentReadOnlySectionProvider 클래스는 인터페이스에 유용한 기본 구현을 제공합니다.

전체 문서를 읽기 전용으로 설정하려면 textEditor.IsReadOnly = true;을 설정하면됩니다.