gpt4 book ai didi

c# - RichTextBox 不处理换行符/回车符

转载 作者:太空狗 更新时间:2023-10-29 23:41:29 25 4
gpt4 key购买 nike

我似乎遇到了 RichTextBox 控件的一个非常不寻常的问题,在 Visual Studio 2008 中用 C# 编程。

我目前正在读取由 Windows 控制台(使用输出重定向)写入的文件流,并且正在将其读入我的程序(本质上,我正在重新创建 unix 世界中已知的内容“尾部”)。

当一个字节数组被读入时,我想回到一个新的行line,继续读下去。但是,我的 RTB 似乎不会响应换行符或回车符。例如,我尝试将 \n\r\n 甚至 Environment.NewLine 附加到正在写入的字符串,但没有似乎在工作。它只是一直在同一行上书写。

这是似乎引起麻烦的代码:

string convertedBuffer = System.Text.Encoding.UTF8.GetString((byte[])e.UserState);

outputBox.AppendText(convertedBuffer + "\n");

我真的很茫然,有人能帮忙吗?

最佳答案

这可能是因为您将 outputBox.Multiline 属性设置为 false,这将阻止控件以多行显示文本。

编辑:您在评论中声明

the byte array that is being sent was one that I made of set size, 512. I now just changed that to one that actually fits the data being filled in it, and now, all of a sudden, the newline character starts working again

事情是这样的:

C# 中的 string 类是一个 char 数组,以指向数组中第一个字符的指针开始,以特殊的“终端”字符结束 \0。因此,当您调用 System.Text.Encoding.UTF8.GetString(buffer) 时,如果缓冲区大小大于字符串大小,它会将字符串的所有剩余字符设置为字符中的终端字符大批。字符数组类似于 some text\0\0\0,所以我猜测当您添加 Environment.NewLine 时会将它添加到最后一个 \0 之后的 char 数组的最后一个索引,然后 char 数组将是 some text\0\0\r\n 并且由于新行在终端之后,它将忽略它。

关于c# - RichTextBox 不处理换行符/回车符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6639600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com