2014-06-06 1 views
1

Visual Studio 2008을 사용하고 있으며 richtextbox에 대한 CaretPosition 기능이없는 것으로 보입니다. 어떻게 전체 행을 캐럿 위치로 가져올 수 있습니까? 예를 들면 다음과 같습니다.RichTextBox에 캐럿 위치의 라인에서 전체 문자열을 가져 오는 방법은 무엇입니까?

   show databases; 
       show tables;/* (the caret (|) is flashing just here so after pressing a button i want to display "show tables"*/ 
       show functions; 

어떻게하면됩니까? 미리 감사드립니다.

+0

코드를 보여줄 수 있다면 더 많은 도움이 될 것입니다. –

답변

2

당신이 WPF 사용하는 경우

 TextPointer caretPos = rtb.CaretPosition; 
     TextPointer start=caretPos.GetLineStartPosition(0); 
     TextPointer end = (caretPos.GetLineStartPosition(1) != null ? caretPos.GetLineStartPosition(1) : caretPos.DocumentEnd); 

     TextRange tr = new TextRange(start, end); 
     MessageBox.Show(tr.Text); 

GetLineStartPosition(0) 위치와 TextPointer 객체를 현재 행의 시작을 반환합니다. GetLineStartPosition(1)TextPointer 개체의 위치를 ​​다음 줄의 시작으로 반환합니다.

캐럿이 마지막 행에있는 경우 caretPos.GetLineStartPosition(1)은 null을 반환합니다. caretPos.DocumentEnd을 사용하여 문제를 해결할 수 있습니다.


당신이 윈폼 사용하는 경우

 string[] lines = rtb.Lines; 
     MessageBox.Show(lines[rtb.GetLineFromCharIndex(rtb.SelectionStart)]); 

rtb.GetLineFromCharIndex(rtb.SelectionStart) 방법은 캐럿이 배치되는 행의 수를 반환합니다.

0

가장 확실하게 입니다. RichTextBox.CaretPosition 속성은 .NET Framework 버전 3.0부터 사용할 수 있습니다.

+0

아니요, 수업 시간에 GetCarPosition이 없습니다. 인텔리 센스에서는 나타나지 않습니다. – user3686730

+0

사용중인 .NET Framework 버전은 무엇입니까? – GeorgeChond

+0

Visual Studio 2008과 3.5 Net Framework, 이상하게 생각되지만 GetCarPosition은 존재하지 않습니다. – user3686730