如何在没有闪烁的情况下从文本框/标签中删除文本

时间:2015-06-16 21:48:42

标签: c# .net vb.net

我想创建一个文本框/标签来显示串行连接的输入/输出。这个程序将运行很长一段时间,因为我不想大量使用内存,所以当它达到最大值时,我会定期减少文本框内容的长度。不幸的是,我发现使用子字符串方法会导致闪烁,因为程序会重绘文本框的整个内容。基本上,我正在寻找的是文本框的appendtext方法的反面。如果你帮我解决这个问题,我将永远是你最好的朋友。

4 个答案:

答案 0 :(得分:3)

我建议使用另一个控件而不是TextBox。重绘的方式很糟糕。

在控件上启用双缓冲时可能会有一些运气(例如:How to prevent a Windows Forms TextBox from flickering on resize?),但我通常会使用ListView

答案 1 :(得分:1)

您应该可以将此代码添加到表单中,并使大部分闪烁(如果不是全部)消失:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;
        return cp;
    }
}

基本上这会打开一个标志,告诉Windows在重新绘制控件时对控件进行双重缓冲。

答案 2 :(得分:1)

使用hive> CREATE EXTERNAL TABLE BG ( > `Id` string, > `Someint` int > ) > ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' > LOCATION '/tmp/example' > TBLPROPERTIES ("skip.header.line.count"="1"); OK Time taken: 0.598 seconds hive> select * from BG; OK 506253-A 10 506254-C 19 506233 8 Time taken: 0.714 seconds, Fetched: 3 row(s) 修改Array.ConstrainedCopy属性。例如计时器每秒更新文本框的时间,最多10行......

Textbox.Lines

答案 3 :(得分:-2)

我在互联网上找到了一个简单的解决方案(c#中的代码),可能太简单了,但请尝试:

void UpdateTextBox(string message)
{
   myTextBox.SelectionStart = myTextBox.Text.Length;
   myTextBox.SelectedText = message;
}