В моей winform есть индикатор выполнения, который должен увеличиваться в зависимости от количества файлов, которые обрабатывает программа. он отлично работает на одном поле (win xp), но не на другом (winserver 2008). К моменту завершения процесса бар не заполняется полностью. Оба имеют одинаковый каркас .net 3.5C# dynamic ProgressBar
private void data_process()
{
int progress_num = (100/checkedListBox1.Items.Count);
.......
progressBar1.Value = progressBar1.Value + progress_num;}
Знаете ли вы, почему? и у вас есть лучшее решение?
------ это новый код
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Value = 0;
richTextBox1.Clear();
richTextBox1.Focus();
if (checkedListBox1.CheckedItems.Count < 1)
{
MessageBox.Show("No file is selected", "Warning");
}
else
{
if ((region != null) && (venue != null) && (lhversion != null) && (release_version != null) && (desc != null))
{
progressBar1.Maximum = checkedListBox1.Items.Count + 3;
progressBar1.Step = 1;
//progressBar1.Value = progressBar1.Value + 10;
progressBar1.PerformStep();
login();
//progressBar1.Value = progressBar1.Value + 10;
progressBar1.PerformStep();
data_process();
//progressBar1.Value = progressBar1.Value + 10;
progressBar1.PerformStep();
if (user_in == true)
{
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.AppendText("Done");
}
}
private void data_process()
{
string line;
//int progress_num = (70/checkedListBox1.Items.Count);
foreach (object itemChecked in checkedListBox1.CheckedItems) // for each selected file
{
...
progressBar1.PerformStep();
}
}
Хорошо, «что не работает нормально»? Убедитесь, что вы «уступаете» управление интерфейсу, чтобы он мог реагировать на события и рисовать вещи. (Долгосрочные задачи часто запускаются в другом потоке, скажем, с помощью [BackgroundWorker] (http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx), который поддерживает отчетность.) –
Бар не заполняется полностью к моменту окончания процесса –