索引超出数组范围 - RichTextBox 行 setvalue

发布于 2024-11-30 06:22:20 字数 525 浏览 0 评论 0原文

我在网上和 StackOverflow 上进行了搜索,但我似乎找不到我的问题的答案,尽管其中一些答案非常接近。

我正在 Delphi Prism 中进行 .Net 编程。我在 WinForm 上有一个 RichTextBox,每次程序插入时我都需要在顶部插入一行文本。因此,我正在执行以下操作,它运行到该行并引发以下异常。

违规代码:

RichTextBox1.Lines.SetValue(str,0);

异常: 索引超出了数组的范围

我想,我想我知道为什么它会引发异常。这是因为 RichTextBox 中没有插入任何行。所以,我的程序确实无法插入任何文本行。每次我的程序插入新的文本行时,我都需要在顶部插入一行文本。

如果我确实调用 RichTextBox1.AppendText(str);,那么它会起作用并插入不带换行符的 str 文本,但它会附加在末尾。我希望它每次都在顶部插入文本。

如何将文本行插入到 RichTextBox 中? 谢谢。

I've searched online and on StackOverflow, but I can't seem to find the answer to my question, although some of them came very close.

I am programming for .Net in Delphi Prism. I have a RichTextBox on a WinForm and I need to insert a line of text at the top every time program does insert. So, I am doing the following and it runs upto the line and raises the following exception.

offending code:

RichTextBox1.Lines.SetValue(str,0);

Exception:
Index was outside the bounds of the array

I think, I think I know why it is raising the exception. It's because there are no lines inserted into RichTextBox. So, my program really can't insert any line of text. I need to really insert line of text at the top everytime my program inserts a new line of text.

If I do call RichTextBox1.AppendText(str);, then it works and inserts the str text without newline, but it appends at the end. I want it inserting text at the top every time.

How do you insert line of text into RichTextBox?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森罗 2024-12-07 06:22:20

文本框的 Lines 属性只是一个字符串数组。因此,您需要添加一个元素,将所有元素向下移动一个索引,然后在第一个索引处插入新文本。

文本框的 Text 属性也是一个字符串。 .NET 中的字符串是不可变的,因此您需要完全替换该值。

一种方法是这样的:

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

The Lines property of the textbox is simply an array of string. So you need to add one element, move all elements one index down and insert your new text at the first index.

Also the Text property of the textbox is a string. Strings in .NET are immutable, so you need to fully replace the value.

One approach would be like this:

RichTextBox1.Text := "YourNewText" + Environment.NewLine + RichTextBox1.Text;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文