2009-10-17 4 views
4

텍스트를 편집 할 때 사용자는 키 보이드 이동 버튼과 방향키를 사용하여 선택 사항을 수정할 수 있습니다. 한 위치는 고정되어 있으며 다른 위치는 고정되어 있습니다. 왼쪽 버튼을 누르면 움직이는 부분을 고정 된 부분의 왼쪽에 가져올 수 있습니다.WPF TextBox - "선택 방향"을 유지하면서 프로그래밍 방식으로 텍스트 선택

WPF의 TextBox에서 사용자 선택을 수정하려고합니다. 예를 들어, Shift + 왼쪽을 누르면 두 개의 문자가 선택되고, 하나가 아닙니다). 그러나 SelectionStart/SelectionIndex/CaretIndex/Select를 사용할 때 선택 영역의 "movebale end"는 항상 선택 영역의 맨 오른쪽 끝으로 이동하여 shift + left 조합을 쓸모 없게 만듭니다.

"선택 방향"을 유지하는 방법은 없나요?

답변

5

이것은 당신이 찾고있는 답변이 아니지만 작동 할 것입니다. 명령을 호출하고 WPF와 같은 방식으로 수행하십시오.

 EditingCommands.SelectLeftByCharacter.Execute(null, textBox1); 
0

내가 생각할 수있는 유일한 방법은 SelectionStart를 설정 한 다음 SelectionLength를 음수로 만드는 것입니다.

+0

이미 시도했지만 (논리적 인 것처럼 보였지만) 예외가 발생합니다. –

+0

MSDN에서 : "SelectionLength가 음수 값으로 설정된 경우 ArgumentOutOfRangeException이 발생합니다."([link] (https://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.selectionlength (v = vs .110) .aspx)) –

2

해당 작업 없음. SelectionLength는 음수가 아니며 CaretIndex는 항상 SelectionStart와 동일합니다. 이는 보호 된 범위에서도 유효한 상태를 달성 할 수 없으므로 TB의 디자인 버그입니다.

명령이 실제로 작동하지만 여전히 분석 된 텍스트 상자의 선택 방향을 확인할 수 없습니다. 못생긴 해결 방법은 단 하나의 솔루션입니다. 마우스 및 키보드 이벤트 처리기를 재정 의하여 자신의 관찰자 코드를 작성할 수 있습니다.