127 lines
5.2 KiB
VB.net
127 lines
5.2 KiB
VB.net
Imports System
|
|
Imports System.Collections.Generic
|
|
Imports System.Text
|
|
Imports DevExpress.XtraEditors
|
|
Imports System.Windows.Forms
|
|
Imports DevExpress.ExpressApp.Demos
|
|
Imports System.Drawing
|
|
Public Class ProgressForm
|
|
Implements IProgressControl
|
|
Public Const FormName As String = "ProgressForm"
|
|
Private _form As XtraForm
|
|
Private _progressbar As ProgressBarControl = New ProgressBarControl()
|
|
Private _cancelbutton As SimpleButton = New SimpleButton()
|
|
Private _label As Label = New Label()
|
|
Private _longOperation As LongOperation
|
|
Private _minimumProgressValue As Long
|
|
Private _maximumProgressValue As Long
|
|
Private _progressFormCaption As String
|
|
Private Delegate Sub UpdateProgressFormDelegate(value As Long, message As String)
|
|
Private Sub CreateProgressForm()
|
|
_form = New XtraForm()
|
|
_form.Name = FormName
|
|
_form.Width = 350
|
|
_form.Height = 125
|
|
_form.StartPosition = FormStartPosition.CenterScreen
|
|
_form.FormBorderStyle = FormBorderStyle.FixedDialog
|
|
_form.MinimizeBox = False
|
|
_form.MaximizeBox = False
|
|
_form.ControlBox = False
|
|
_form.ShowInTaskbar = False
|
|
|
|
_label.Parent = _form
|
|
_label.Location = New Point(10, 10)
|
|
_label.Size = New Size(_form.ClientSize.Width - 20, 13)
|
|
|
|
_progressbar.Parent = _form
|
|
_progressbar.Location = New Point(10, 30)
|
|
_progressbar.Name = "progressBar"
|
|
_progressbar.Size = New Size(_form.ClientSize.Width - 20, 15)
|
|
_progressbar.Properties.Minimum = _minimumProgressValue
|
|
_progressbar.Properties.Maximum = _maximumProgressValue
|
|
_progressbar.Properties.Step = 1
|
|
|
|
_cancelbutton.Parent = _form
|
|
_cancelbutton.DialogResult = DialogResult.Cancel
|
|
_cancelbutton.Size = New Size(75, 23)
|
|
_cancelbutton.Location = New Point((_form.Width - _cancelbutton.Width) / 2, 55)
|
|
_cancelbutton.Text = "&Cancel"
|
|
AddHandler _cancelbutton.Click, AddressOf cancelButton_Click
|
|
AddHandler _cancelbutton.LostFocus, AddressOf DoOnFormLostFocus
|
|
_form.CancelButton = _cancelbutton
|
|
_form.Text = _progressFormCaption
|
|
End Sub
|
|
Public Sub ShowProgress(longOperation As DevExpress.ExpressApp.Demos.LongOperation) Implements IProgressControl.ShowProgress
|
|
_form.Show()
|
|
Me._longOperation = longOperation
|
|
AddHandler Me._longOperation.ProgressChanged, AddressOf LongOperation_ProgressChanged
|
|
AddHandler Me._longOperation.Completed, AddressOf LongOperation_Completed
|
|
End Sub
|
|
Private Sub DoOnFormLostFocus(sender As Object, e As EventArgs)
|
|
_form.Focus()
|
|
End Sub
|
|
Private Sub LongOperation_Completed(sender As Object, e As LongOperationCompletedEventArgs)
|
|
If _form IsNot Nothing Then
|
|
_form.Invoke(New MethodInvoker(AddressOf _form.Close))
|
|
End If
|
|
End Sub
|
|
Private Sub UpdateProgressForm(value As Long, message As String)
|
|
_progressbar.EditValue = value
|
|
_progressbar.Update()
|
|
_label.Text = message
|
|
End Sub
|
|
Private Sub LongOperation_ProgressChanged(sender As Object, e As LongOperationProgressChangedEventArgs)
|
|
Dim value As Long = e.ProgressPercentage
|
|
If _form IsNot Nothing Then
|
|
_form.Invoke(New UpdateProgressFormDelegate(AddressOf UpdateProgressForm), value, e.Message)
|
|
End If
|
|
End Sub
|
|
Private Sub cancelButton_Click(sender As Object, e As EventArgs)
|
|
_longOperation.CancelAsync()
|
|
End Sub
|
|
Public Sub ProgressForm(caption As String, minimum As Integer, maximum As Integer)
|
|
_progressFormCaption = caption
|
|
_minimumProgressValue = minimum
|
|
_maximumProgressValue = maximum
|
|
CreateProgressForm()
|
|
End Sub
|
|
#Region "IDisposable Support"
|
|
Private disposedValue As Boolean ' To detect redundant calls
|
|
|
|
' IDisposable
|
|
Protected Overridable Sub Dispose(disposing As Boolean)
|
|
If Not Me.disposedValue Then
|
|
If disposing Then
|
|
' TODO: dispose managed state (managed objects).
|
|
End If
|
|
|
|
_label = Nothing
|
|
RemoveHandler _cancelbutton.LostFocus, AddressOf DoOnFormLostFocus
|
|
RemoveHandler _longOperation.ProgressChanged, AddressOf LongOperation_ProgressChanged
|
|
RemoveHandler _longOperation.Completed, AddressOf LongOperation_Completed
|
|
_longOperation = Nothing
|
|
If _form IsNot Nothing Then
|
|
_form.Invoke(New MethodInvoker(AddressOf _form.Dispose))
|
|
_form = Nothing
|
|
End If
|
|
End If
|
|
Me.disposedValue = True
|
|
End Sub
|
|
|
|
' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources.
|
|
'Protected Overrides Sub Finalize()
|
|
' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
|
|
' Dispose(False)
|
|
' MyBase.Finalize()
|
|
'End Sub
|
|
|
|
' This code added by Visual Basic to correctly implement the disposable pattern.
|
|
Public Sub Dispose() Implements IDisposable.Dispose
|
|
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
|
|
Dispose(True)
|
|
GC.SuppressFinalize(Me)
|
|
End Sub
|
|
#End Region
|
|
|
|
End Class
|