This document is archived and information here might be outdated. Recommended version. |
Launch a Progress Dialog to display how long it is taking to complete some event.
/// <summary> /// Launch a Progress Dialog to display how long it is taking to complete some event. /// </summary> /// <param name="application">An IApplication interface.</param> /// <param name="int32_Minimum">A System.Int32 that is the starting point for the progress display. Example: 0</param> /// <param name="int32_Maximum">A System.Int32 that is the ending point for a progress display. Example: 10000</param> /// <param name="string_Message">A System.String that is the message you want to user to see. Example: "Parsing Data, Please Wait.</param> /// <remarks> /// Calling this sub/method by itself is only half of the programming effort. Inside of the For loop you do something /// that requires time to progress. /// </remarks> public void ShowProgressDialog(ESRI.ArcGIS.Framework.IApplication application, System.Int32 int32_Minimum, System.Int32 int32_Maximum, System.String string_Message) { // Create a CancelTracker ESRI.ArcGIS.esriSystem.ITrackCancel trackCancel=new ESRI.ArcGIS.Display.CancelTrackerClass(); ESRI.ArcGIS.Framework.IProgressDialogFactory progressDialogFactory=new ESRI.ArcGIS.Framework.ProgressDialogFactoryClass(); // Set the properties of the Step Progressor System.Int32 int32_hWnd=application.hWnd; ESRI.ArcGIS.esriSystem.IStepProgressor stepProgressor=progressDialogFactory.Create(trackCancel, int32_hWnd); stepProgressor.MinRange=int32_Minimum; stepProgressor.MaxRange=int32_Maximum; stepProgressor.StepValue=1; stepProgressor.Message=string_Message; // Create the ProgressDialog. This automatically displays the dialog ESRI.ArcGIS.Framework.IProgressDialog2 progressDialog2=(ESRI.ArcGIS.Framework.IProgressDialog2)stepProgressor; // Explict Cast // Set the properties of the ProgressDialog progressDialog2.CancelEnabled=true; progressDialog2.Description="Counting to " + int32_Maximum.ToString() + "."; progressDialog2.Title="Counting..."; progressDialog2.Animation=ESRI.ArcGIS.Framework.esriProgressAnimationTypes.esriDownloadFile; // Step. Do your big process here. System.Boolean boolean_Continue=false; boolean_Continue=true; System.Int32 i=0; for (i=int32_Minimum; i <= int32_Maximum; i++) { ESRI.ArcGIS.esriSystem.IStatusBar statusBar=application.StatusBar; statusBar.set_Message(0, i.ToString()); //TODO: //Ideally you would call another sub/function/method from here to do the //work. For example read all files of a specified types on disk, loop //through a recordset, etc. //... //Check if the cancel button was pressed. If so, stop process boolean_Continue=trackCancel.Continue(); if (!boolean_Continue) { break; } } // Done trackCancel=null; stepProgressor=null; progressDialog2.HideDialog(); progressDialog2=null; }
''' <summary> ''' Launch a Progress Dialog to display how long it is taking to complete some event. ''' </summary> ''' <param name="application">An IApplication interface.</param> ''' <param name="int32_Minimum">A System.Int32 that is the starting point for the progress display. Example: 0</param> ''' <param name="int32_Maximum">A System.Int32 that is the ending point for a progress display. Example: 10000</param> ''' <param name="string_Message">A System.String that is the message you want to user to see. Example: "Parsing Data, Please Wait.</param> ''' <remarks> ''' Calling this sub/method by itself is only half of the programming effort. Inside of the For loop you do something ''' that requires time to progress. ''' </remarks> Public Sub ShowProgressDialog(ByVal application As ESRI.ArcGIS.Framework.IApplication, ByVal int32_Minimum As System.Int32, ByVal int32_Maximum As System.Int32, ByVal string_Message As System.String) ' Create a CancelTracker Dim trackCancel As ESRI.ArcGIS.esriSystem.ITrackCancel=New ESRI.ArcGIS.Display.CancelTrackerClass Dim progressDialogFactory As ESRI.ArcGIS.Framework.IProgressDialogFactory=New ESRI.ArcGIS.Framework.ProgressDialogFactoryClass ' Set the properties of the Step Progressor Dim int32_hWnd As System.Int32=application.hWnd Dim stepProgressor As ESRI.ArcGIS.esriSystem.IStepProgressor=progressDialogFactory.Create(trackCancel, int32_hWnd) stepProgressor.MinRange=int32_Minimum stepProgressor.MaxRange=int32_Maximum stepProgressor.StepValue=1 stepProgressor.Message=string_Message ' Create the ProgressDialog. This automatically displays the dialog Dim progressDialog2 As ESRI.ArcGIS.Framework.IProgressDialog2=CType(stepProgressor, ESRI.ArcGIS.Framework.IProgressDialog2) ' Explict Cast ' Set the properties of the ProgressDialog progressDialog2.CancelEnabled=True progressDialog2.Description="Counting to " + int32_Maximum.ToString + "." progressDialog2.Title="Counting..." progressDialog2.Animation=ESRI.ArcGIS.Framework.esriProgressAnimationTypes.esriDownloadFile ' Step. Do your big process here. Dim boolean_Continue As System.Boolean boolean_Continue=True Dim i As System.Int32 For i=int32_Minimum To int32_Maximum Dim statusBar As ESRI.ArcGIS.esriSystem.IStatusBar=application.StatusBar statusBar.Message(0)=i.ToString 'TODO: 'Ideally you would call another sub/function/method from here to do the 'work. For example read all files of a specified types on disk, loop 'through a recordset, etc. '... 'Check if the cancel button was pressed. If so, stop process boolean_Continue=trackCancel.Continue If Not boolean_Continue Then Exit For End If Next i ' Done trackCancel=Nothing stepProgressor=Nothing progressDialog2.HideDialog() progressDialog2=Nothing End Sub