多行文本框中的降序文本(Compact Framework,C#)

时间:2010-09-08 20:50:13

标签: c# compact-framework

我正在使用来自串口的数据将文本写入多行文本框。目前,它将每个新行写入上一行下方,因此最终最新的文本行不在屏幕上,用户必须向下滚动才能查看它们。如何更改代码以便将每个新行写在上面而不是在上一行文本下面?我正在使用VS2008中的C#为Windows Mobile 6设备开发程序。我知道这可能是一个简单的解决方案,但我是C#的新手,似乎无法弄清楚我在做什么。提前谢谢!

更新

这是我最接近我想要完成的事情:

private void terminalText(object o, EventArgs e)
    {
        tbTerminal.Text += rawString;
        tbTerminal.Select(tbTerminal.TextLength, 0);
        tbTerminal.ScrollToCaret();
    }

它不会像我希望的那样在上一行上面写下一行,但它会自动聚焦最新的书面文本,因此您不必使用滚动条来查看最新的端口数据。我感谢所有的帮助!

2 个答案:

答案 0 :(得分:1)

我认为你应该能够在所有之前的文本前插入新的文本行,如下所示:

field.Text = receivedLine + "\r\n" + field.Text

另一种选择是始终将文本添加到最后,只需将文本字段滚动到结尾:

        field.Text += receivedLine + "\r\n"
        var isNotEmpty = field.TextLength > 0;
        if (isNotEmpty)
        {
            field.Select(field.TextLength - 1, 0);
            field.ScrollToCaret();
        }

对于以合理频率接收的合理数量的文本,这是合适的。如果您开始使用大量文本或大量更新,则可能需要进一步优化。

答案 1 :(得分:1)

你总是可以选择最后一个字符,然后滚动到插入符号,我不太确定它是否与紧凑框架有任何不同,但是使用常规文本框控件:

textBox.Select(textBox.TextLength, 0);
textBox.ScrollToCaret();