我有一个richTextBox,我一直在递归函数中更新附加文本。在这种情况下,我将硬盘中的目录添加到richTextBox。我这样做了,当文本下降时,右侧的栏会保持向下,所以如果我想查看较旧的文本,我需要向上滚动。
问题是当我从硬盘添加目录作为字符串时,它的工作速度非常快,并使右侧的文本和栏闪烁或跳跃。
这是我在构造函数中所做的设置:
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 向下滚动,所以如果我想看到之前添加的文本,我总是会看到新的文本输入,我需要抓住右边的栏。
这就是我在递归函数中将文本添加到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); }));
这是我用来从硬盘读取目录并将其作为列表返回的函数
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;
}