2011-08-19 61 views
0

我想在某些方面加載文本文件(6MB)的部分,所以每次用戶將向下滾動它將加載文本文件的下一部分到richtextbox。將大文本文件加載到richtextbox中;反應到文本框滾動

我不知道如何檢查用戶是否和何時向下滾動以及向下滾動多少,然後再從文本文件再次加載到richtextbox。

此外,我希望每次用戶向下滾動並加載下一部分時,進度條都會顯示百分比。所以他們會知道上傳文本的下一部分需要多長時間。

也許有另一種方法來解決它。我想要最好的方式來加載6mb文本文件到richtextbox最好的方式,我的意思是最快的方式。或者如果速度不那麼快,那麼現在不能正常工作的進度條會顯示剩下多少。

我以前用過一個計數器只是爲了檢查他是否是>= 200 then break; 我現在不需要它了,我想解決一些大文件加載問題。

namespace WindowsFormsApplication1 
{ 
    public partial class textBoxLoggerViewer : Form 
    { 
     int counter; 
     StreamReader sr; 
     string line; 
     string log_file_name = @"\logger.txt"; 
     string logger_file_to_read = Path.GetDirectoryName(Application.LocalUserAppDataPath) + @"\log"; 

     public textBoxLoggerViewer() 
     { 
      InitializeComponent(); 
      counter = 0; 
      richTextBox1.Font = new Font("Consolas", 8f, FontStyle.Bold); 
      richTextBox1.BackColor = Color.AliceBlue; 
      backgroundWorker1.WorkerReportsProgress = true; 
      backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork); 
      backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged); 
      backgroundWorker1.RunWorkerAsync(); 
     } 

     private void textBoxLoggerViewer_Load(object sender, EventArgs e) 
     { 
     } 

     private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
     { 
      sr = new StreamReader(logger_file_to_read+log_file_name); 
      while (null != (line = sr.ReadLine())) 
       { 
         counter = counter + 1; 
         backgroundWorker1.ReportProgress(1, line); 
       } 
      sr.Close(); 
     } 

     private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      progressBar1.Value = e.ProgressPercentage; 
      richTextBox1.AppendText(e.UserState.ToString()); 
     } 

    } 
} 

回答