Solved

dynamically change progress bar

Posted on 2006-11-03
5
273 Views
Last Modified: 2010-04-16
Hi the below code should ensure that my progress bar on the relevent import form accurately shows the progress of my import and that is my problem - getting the progress bar to accurately show the progress of the import. Please help!

public override bool Import ( string filename, params object[] additionalParameters )
            {
                  
                  for ( int i = 0; i < 100; i ++ ) //This is the problem line because there could be any number of records
                  {

                        // Ensure it hasn't been cancelled
                        if ( !this._cancelled )
                        {
                              this.Raise_ProgressUpdated ( "Importing", "Client " + i.ToString (), i );//This will show "Client" + record number
                                                                        //Do import here
                              System.Threading.Thread.Sleep ( 50 );
                        }
                        else
                        {
                              this.Raise_Complete ( false );
                              return false;
                        }

                  }

                  this.Raise_Complete ( true );

                  return true;

            }
0
Comment
Question by:JakeyCakes
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 8

Expert Comment

by:redpipe
ID: 17865401
Loop through the file first to get the correct number of rows, and then set the maximum of your progressbar:

public int NumberOfLines(string path)
{
      int num = 0;
      using (StreamReader sr = new StreamReader(path, Encoding.Default)) {
            while (sr.ReadLine() != null) {
                  num++;
            }
      }
      return num;
}
0
 
LVL 15

Accepted Solution

by:
ozymandias earned 250 total points
ID: 17865418
You first have to check the number of records

    int n = number_of_records;
    // here make a callback or raise an event to set the correct max value in the progress bar

then

for (int i =0; i < n; i++)
{
    etc;
}

0
 
LVL 15

Expert Comment

by:ozymandias
ID: 17865421
sorry, didn't see redpipe's post
0
 
LVL 8

Assisted Solution

by:redpipe
redpipe earned 250 total points
ID: 17865453
Another approach is to check if the maximum of the progressbar is reached and adjust it accordingly

using (StreamReader sr = new StreamReader(path, Encoding.Default)) {
  if ( !_cancelled )
    if(YourProgressBar.Value >= YourProgressBar.Maximum){
      //Choose an appropriate value for dynamic increase. Could also be 10% or whatever that suites your purpose
      YourProgressBar.Maximum = YourProgressBar.Maximum + 100;
      // => Continue doing your magic  :-)
    }
  } else {
  }
  // When your done importing or the user has cancelled. Set the progressbar to 100% or hide it, to indicate that your done
  YourProgressBar.Value = YourProgressBar.Maximum;
}
0
 

Author Comment

by:JakeyCakes
ID: 17866286
Thank you both for your help, I am going to split the points evenly.
0

Featured Post

Revamp Your Training Process

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
I need help with Crystal Report's Parameter Prompt Form 2 66
Dynamics CRM Plugin Query TotalRecordCount returning -1 13 63
Problem to Office 1 45
c# ftp code 3 35
Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question