私は、再帰関数で常に追加テキストを更新する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;
}