![]() |
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