Я думал как-то загрузить текстовый файл (6 МБ) по частям, чтобы каждый раз, когда пользователь прокручивал его, он загружал следующую часть текстового файла в richtextbox.
Я не знаюкак проверить, прокручивал ли пользователь и когда он прокручивал вниз, и сколько он прокручивал вниз, а затем, сколько снова загрузить из текстового файла в richtextbox.
Также я хочу, чтобы индикатор выполнения отображал проценты каждый разПользователь прокручивает вниз и загружает следующую часть.Таким образом, пользователь будет знать, сколько времени займет загрузка следующей части текста.
Может быть, есть другой способ решить эту проблему.Я хочу, чтобы лучший способ загрузить текстовый файл 6 МБ в 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());
}
}
}