Это мой первый C# проект. У меня есть два файла .cs, один из которых содержит все, что связано с GUI (Form1.cs), а другой - мою обработку (GMF.cs). Когда пользователь нажимает «Start» (a Button
) на GUI, управление переходит к Form1.cs, который внутренне вызывает GMFMat (), присутствующий в файле GMF.cs.
В Form1.cs у меня есть:
private void button1_Click(object sender, EventArgs e) // Start Processing button clicked.
{
GMF n = new GMF();
func_out = n.GMFMat(inputs_GUI, this.progressBar1, this.textBox_imageNumber);
}
private void timer1_Tick(object sender, EventArgs e) // Increment Progress Bar
{
progressBar1.Increment(1);
}
private void textBox_imageNumber_TextChanged(object sender, EventArgs e)
{
this.Text = textBox_imageNumber.Text;
Console.Write("Text = " + textBox_imageNumber.Text);
}
В GMF.cs у меня есть:
class GMF
{
public Tuple<string, int> GMFMat(in_params input_from_GUI, System.Windows.Forms.ProgressBar bar, System.Windows.Forms.TextBox textBox_ImgNumber)
{
double nth_file = 0;
double num_files = 100
foreach (string dir in dirs) // For our example, say 100 ierations
{
nth_file = nth_file + 1;
textBox_ImgNumber.Text = nth_file.ToString();
// Progress bar updates in each iteration, and I can see it as it progresses on the windows Form during execution.
bar_value_percent = nth_file / num_files * 100;
bar.Value = int.Parse(Math.Truncate(bar_value_percent).ToString());
}
}
}
Form1.cs [Design] имеет TextBox ( который я просто перетащил из панели инструментов). Я переименовал (Name) = textBox_imageNumber
- Значение увеличивается на 1 каждый раз, когда оно входит в для l oop.
- Основная цель c состоит в том, что я хочу, чтобы пользователь знал (отображать сообщение в приложении формы) каждый раз, когда для l oop завершается 1000 итераций.
Когда я запускаю приведенный выше код, я замечаю следующее:
В окне консоли вывод такой, как ожидалось: Text = 1, Text = 2, ... Text = 100
как программа продолжается. - это показывает, что значение переменной в textBox_ImgNumber.Text обновляется внутри для l oop файла GMF.cs и достигает Form1.cs.
Однако в форме значение во время выполнения программы в текстовом поле будет пустым (внутри для l oop). Как только он выйдет из func_out = n.GMFMat(inputs_GUI, this.progressBar1, this.textBox_imageNumber);
, значение textBox будет отображаться как 100.
Я хочу, чтобы значение текстового поля в форме обновлялось как и когда для l oop повторяется (как я вижу в окне консоли). Как я могу это сделать?
Я использую Visual Studio, C# в Visual Studio 2010, NET Framework 4 Профиль клиента
Я знаю, что моя форма хорошо работает в отношении обработки и т. д. c, поскольку другие функции хорошо связаны между двумя файлами .cs.
Например, у меня также есть индикатор выполнения, прогресс которого я вижу, когда выполняется программа.