2012-10-26 91 views
0

我有一個richTextBox,我更新追加文本在一個recrusive函數中的所有時間。 在這種情況下即時將我的硬盤上的目錄添加到richTextBox。 我這樣做時,文本下來右邊的酒吧會留下來,所以如果我想看到舊的文本我需要向上滾動。如何快速滾動文本時aovid richTextBox閃爍?

Thep問題是,當即時通訊從硬盤添加目錄作爲字符串,其工作速度非常快,使文本和酒吧在右側閃爍或跳躍。

這是我在構造函數中做了設置:

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到scorll下來,所以我所有的時間看新的文本饋送,如果我想看到之前添加的文本,我需要抓住右邊的酒吧。

這是怎麼IM將在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; 

     } 
功能IM

回答