代码之家  ›  专栏  ›  技术社区  ›  ninehundreds

多行文本框中的降序文本(压缩框架,C#)

  •  1
  • ninehundreds  · 技术社区  · 15 年前

    我正在使用串行端口的数据将文本写入多行文本框。目前,它将每一行写在前一行的下方,因此最终最新的文本行将离开屏幕,用户必须向下滚动才能查看它们。如何更改代码,使其在上一行文本的上方而不是下方写入每一行新行?我正在用VS2008中的C为WindowsMobile6设备开发程序。我知道这可能是一个简单的解决方案,但我对C#还不熟悉,似乎不知道自己在做什么。提前谢谢!

    更新:

    这是最接近我想要达到的目标:

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

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Blam    15 年前

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

    textBox.Select(textBox.TextLength, 0);
    textBox.ScrollToCaret();
    
        2
  •  1
  •   Don Kirkby    15 年前

    我想你应该可以把新的一行文字放在前面,就像这样:

    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();
            }
    

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

    推荐文章