2011-08-17 67 views
0

我在網上搜索和StackOverflow,但我似乎無法找到我的問題的答案,雖然其中一些非常接近。索引超出了數組的邊界 - RichTextBox行setvalue

我在Delphi Prism中爲.Net編程。我在WinForm上有一個RichTextBox,每次程序插入時都需要在頂部插入一行文本。所以,我正在做以下事情,它運行到該行並引發以下異常。

違規代碼:

RichTextBox1.Lines.SetValue(str,0); 

例外: 指數是陣列

我想的邊界之外,我想我知道爲什麼它提高例外。這是因爲沒有插入到RichTextBox中的行。所以,我的程序確實無法插入任何文本行。我需要在每次插入一行新文本時在頂部插入一行文本。

如果我確實調用RichTextBox1.AppendText(str);,那麼它的工作原理是插入str文本而不換行,但它會在最後附加。我希望它每次都在頂部插入文本。

如何在RichTextBox中插入文本行? 謝謝。

+0

你肯定沒有一個.Insert(字符串,int)方法或類似的東西? .SetValue()聽起來像是替換一行的方法,而不是插入一行。 –

+0

@Charles,我看到一個插入函數RichTextBox,但我現在找不到它。我知道,儘管這不是線路。 – ThN

回答

1

文本框的Lines屬性只是一個字符串數組。因此,您需要添加一個元素,將所有元素向下移動一個索引,並在第一個索引處插入新文本。

此外,文本框的Text屬性是一個字符串。 .NET中的字符串是不可變的,所以你需要完全替換這個值。

一種方法是這樣的:

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

我覺得你的方法很簡單,很有效。我可以花更多的時間研究這一點,但我只會浪費時間。謝謝。 – ThN

相關問題