我想在某些方面加载文本文件(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());
}
}
}