RichTextBox不处理新行/回车符

TGP*_*994 5 .net c# string richtextbox visual-studio-2008

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

我正在读取由Windows控制台写入的文件流(带有输出重定向),我正在将它读入我的程序(实际上,我正在重新创建unix世界中已知的"尾部") ).

读入一个字节数组时,我想返回一个新的换行符,然后继续读取.但是,似乎我的RTB不会响应新的换行符或回车符.例如,我尝试追加\n,\r\n甚至Environment.NewLine写入正在编写的字符串,但似乎没有任何工作.它只是在同一条线上写作.

这是似乎导致麻烦的代码:

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

outputBox.AppendText(convertedBuffer + "\n");
Run Code Online (Sandbox Code Playgroud)

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

Jal*_*aid 5

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

编辑:您在评论时说

正在发送的字节数组是我用set size 512制作的字节数组.我现在只是将其更改为实际适合填充数据的数组,现在,突然之间,换行符再次开始工作

这是发生了什么:

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