Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 544
  • Last Modified:

Implementing a progressbar in VB.NET

I want to implement a progressbar to show the mail merge progress after a user has selected a letter from a combobox on Form1.  My script so far as follows:

Private Sub cmdOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOK.Click
        If ComboBox1.SelectedItem = "Letter1" Then
            Module1.Letter1()
        ElseIf ComboBox1.SelectedItem = "Letter2" Then
            Module1.Letter2()
        End If

*Module1 contains the mail merge script
I want the progress bar to move on Form1 while the mail merge (Module1) is executing.  I would appreciate any solutions as this is my first VB.net project.
0
symanski
Asked:
symanski
  • 2
  • 2
  • 2
2 Solutions
 
AlexFMCommented:
Pass progressbar reference to Letter function:

Module1.Letter1(progressBar1)

In the function:

Sub Letter1(progressBar as ProgressBar)

    Do While ...
        ' do something

        progressBar.Value = ...   ' set progress bar position
        Application.DoEvents()    ' update window
    End

End Sub
0
 
symanskiAuthor Commented:
I'm still having problems with the 'Do While' statement in the letters function.  Would I need to use a loop to update the progressbar until the mail merge was completed.

Any suggestions would be appreciated.

Thanks  
0
 
AlexFMCommented:
If you don't have any loop inside of Letter1 function, this is impossible. This solution works if you already have some loop, and you can update progressbar from it.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
p_sieCommented:
If you don't have a loop and you want to display something that will make the user understand that the computer
is working, display some kind of form with a timer on it, that will change an icon every 1 second...
Like the compying progress window of windows (2 folders with files moving between, and some wrong calculation of the
time remaining...)
0
 
symanskiAuthor Commented:
Is there any way of implementing a loop into the existing module below:
   
Sub Letter1(ByVal progressBar As ProgressBar)
        Dim wapp As Word.Application
        wapp = CreateObject("Word.Application")
        wapp.Documents.Open("path...")
        wapp.Visible = True
        With wapp.ActiveDocument.Mailmerge
        .Destination = Word.WdMailMergeDestination.wdSendToNewDocument
With  .Datasource
         .firstrecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord
         .lastrecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord
End With
        .execute(pause:=False)
End With
        wapp.Windows.Item("Letter1.doc").Close()
0
 
p_sieCommented:
Doesn't look to me you can implement a loop.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now