I use visual studio 8.0
Two forms:

windows form => form1.vb
windows dialog form => ProcesDialog.vb
On the procesDiaglog are five label fields:
label1
label2
label3
label4
label5

Two picture fields
picture1
picture2

I want to show the progress of building a Windows form1
I would always show the progress in procesdiaglog
Problem is that Form1 does not become visible and procesdiaglog remains a blank screen (see Annex).
Form1 is so called: form1.show
For more information, see code from form1.vb.

Public Sub New()  
        ' This call is required by the Windows Form Designer.
        ' Add any initialization after the InitializeComponent() call.
         ' This call is required by the Windows Form Designer.
        InitializeComponent()
        ProcesDialog.Show()
        ProcesDialog.ProgressBar1.PerformStep()
        ProcesDialog.Label1.Text = "fase 1"
        ProcesDialog.Label2.Text = 0
        ProcesDialog.Label3.Text = "Percentage completed" & Int(ProcesDialog.ProgressBar1.Value * 100 / ProcesDialog.ProgressBar1.Maximum) & "%"
          For i = 1 To 1000000000
            If i = 10000 Then
                ProcesDialog.ProgressBar1.PerformStep()
                ProcesDialog.Label1.Text = "fase 2"
                ProcesDialog.Label2.Text = i
                ProcesDialog.Label3.Text = "Percentage completed" & Int(ProcesDialog.ProgressBar1.Value * 100 / ProcesDialog.ProgressBar1.Maximum) & "%"
                               Me.Refresh()
            End If

            If i = 100000 Then
                ProcesDialog.ProgressBar1.PerformStep()
                ProcesDialog.Label1.Text = "fase 3"
                ProcesDialog.Label2.Text = i
                ProcesDialog.Label3.Text = "Percentage completed" & Int(ProcesDialog.ProgressBar1.Value * 100 / ProcesDialog.ProgressBar1.Maximum) & "%"
                            End If

            If i = 7000000 Then
                ProcesDialog.ProgressBar1.PerformStep()
                ProcesDialog.Label1.Text = "fase 4"
                ProcesDialog.Label2.Text = i
                ProcesDialog.Label3.Text = "Percentage completed" & Int(ProcesDialog.ProgressBar1.Value * 100 / ProcesDialog.ProgressBar1.Maximum) & "%"
           End If
        Next

'Here Here comes the rest of the code ......
end sub

Thanks for the reply,

André

Recommended Answers

All 2 Replies

You can use BackgroundWork,

Dim dlg As Form
    Dim pgr As ProgressBar
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        BackgroundWorker1.WorkerReportsProgress = True
        dlg = New Form()
        pgr = New ProgressBar
        pgr.Dock = DockStyle.Fill
        pgr.Minimum = 1
        pgr.Maximum = 100

        dlg.Owner = Me
        dlg.Size = New Size(150, 40)
        dlg.Controls.Add(pgr)
        dlg.Text = "Please wait"
        dlg.Show()

        BackgroundWorker1.RunWorkerAsync()

    End Sub
   

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        For i As Integer = 1 To 100
            Threading.Thread.Sleep(100)
            BackgroundWorker1.ReportProgress(i)
        Next
    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        pgr.Value = e.ProgressPercentage
        dlg.Text = e.ProgressPercentage & "%"
    End Sub

    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        dlg.Close()
    End Sub

Thanks!!!, this works fine!!!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.