2011-08-17 3 views
0

온라인 및 StackOverflow에서 검색했습니다. 그러나 일부는 매우 가까이 왔지만 내 질문에 대한 답을 찾지 못하는 것 같습니다.인덱스가 배열의 경계를 벗어났습니다 - RichTextBox lines setvalue

저는 Delphi Prism에서 .NET 프로그래밍을하고 있습니다. WinForm에 RichTextBox가 있고 프로그램을 삽입 할 때마다 맨 위에 한 줄의 텍스트를 삽입해야합니다. 그래서, 나는 다음과 같은 일을하고 그것은 최대 개까지 실행하고 다음과 같은 예외를 발생시킵니다.

잘못된 코드 :

RichTextBox1.Lines.SetValue(str,0); 

예외 : 지수는

내가 생각 배열의 범위를 벗어난, 나는 예외를 제기하는 이유를 나는 알 것 같아요. 그것은 RichTextBox에 삽입 된 선이 없기 때문입니다. 그래서, 내 프로그램 정말 텍스트의 라인을 삽입 할 수 없습니다. 내 프로그램이 새로운 텍스트 줄을 삽입 할 때마다 맨 위에 텍스트 줄을 실제로 삽입해야합니다.

RichTextBox1.AppendText (str)을 호출하면 개행 문자없이 str 텍스트가 삽입되지만 끝에 추가됩니다. 매번 텍스트를 맨 위에 삽입하고 싶습니다.

어떻게 RichTextBox에 텍스트 줄을 삽입합니까? 감사합니다. .

+0

당신에게를 취소하려면 (문자열, int) 메소드 또는 이와 유사한이없는 확신합니까? .SetValue()는 행을 대체하고 삽입하는 메소드가 아닌 것처럼 보입니다. –

+0

@Charles, 삽입 기능 RichTextBox를 보았지만 지금은 찾을 수 없습니다. 나는 알고있다, 그것은 선을 위해 없었다. – ThN

답변

1

텍스트 상자의 Lines 속성은 단순히 문자열 배열입니다. 따라서 하나의 요소를 추가하고 모든 요소를 ​​하나의 인덱스로 이동 한 다음 첫 번째 인덱스에 새 텍스트를 삽입해야합니다.

또한 텍스트 상자의 Text 속성은 문자열입니다. .NET의 문자열은 변경할 수 없으므로 값을 완전히 대체해야합니다.

한 가지 방법은 다음과 같습니다

RichTextBox1.Text := "YourNewText" + Environment.NewLine + RichTextBox1.Text; 
+0

나는 당신의 접근 방식이 간단하고 작동한다고 생각합니다. 이것에 대해 조사하는 데 더 많은 시간을 할애 할 수는 있지만 시간을 낭비 할뿐입니다. 고맙습니다. – ThN