我有一个richTextBox,我在recrusive函数中一直更新文本。 在这种情况下,我将目录从我的硬盘添加到richTextBox。 当文本下到右边的栏时,我就这样做了,所以如果我想查看较旧的文本,我需要向上滚动。
Thep roblem就是当我从硬盘添加目录作为字符串时,它的工作速度非常快,并使右边的文本和条形闪烁或跳跃。
这是我在构造函数中所做的设置:
richTextBox1.TabStop = false;
richTextBox1.ReadOnly = true;
richTextBox1.BackColor = Color.White;
richTextBox1.Cursor = Cursors.Arrow;
richTextBox1.Enter += richTextBox1_Enter;
richTextBox1.BackColor = Color.White;
这是ruchTextBox文本更改事件:
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();
}
这使得richTextBox变得昏暗,所以我总是看到新的文字喂养,如果我想看到更早的文字,我需要抓住右边的栏。
这是我在recrusive函数中将文本添加到richTextBox的方式:
this.Invoke(new MethodInvoker(delegate { ColorText.Texts(richTextBox1, "Level: " + levels.ToString(), Color.Green); }));
this.Invoke(new MethodInvoker(delegate { ColorText.Texts(richTextBox1, " Loading The Url: ", Color.Red); }));
this.Invoke(new MethodInvoker(delegate { ColorText.Texts(richTextBox1, url + "...", Color.Blue); }));
这是我用来从硬盘读取目录并将其作为List返回的函数
private List<string> offline(string targetDirectory)
{
if (targetDirectory.StartsWith("http://"))
{
targetDirectory = targetDirectory.Substring("http://".Length);
}
List<string> directories = new List<string>();
try
{
string[] dirs = Directory.GetDirectories(targetDirectory,"*.*",SearchOption.TopDirectoryOnly);
for (int i = 0; i < dirs.Length; i++)
{
string t = "http://" + dirs[i];
directories.Add(t);
}
}
catch
{
}
return directories;
}
答案 0 :(得分:0)
可以在更新时禁用表单上的绘图。
您可以发送一条名为WM_SETREDRAW的消息来禁用和启用绘图。
http://fgaillard.com/2011/02/the-unfortunate-effect-of-wm_setredraw/