Attivare due progressBar

di il
5 risposte

Attivare due progressBar

Buonasera,

avrei necessità di attivare due progressBar, ma la prima avanza al completamento della seconda, vi allego il codice:

Private Sub CaricaProvincie_Comuni ()
        Dim filecomuni As String = Application.StartupPath & "\Comunt.dat"
        Dim rec As Integer = 0
        Dim NumProv As Integer = ProvinceDataGridView.Rows.Count - 1

        Dim Scrivi As New XmlTextWriter(Application.StartupPath & "\ProvComuni_tmp.xml", System.Text.Encoding.UTF8)
        Scrivi.WriteStartDocument(True)
        Scrivi.Formatting = Formatting.Indented
        Scrivi.Indentation = 0
        Scrivi.WriteStartElement("Provincie-Comuni")
        For i = 1 To NumProv
            AggiornaXLMProvTSPB.Value = i
            Dim nomeprov As String = ProvinceDataGridView.Rows(i - 1).Cells(1).Value()
            Dim nomesigla As String = ProvinceDataGridView.Rows(i - 1).Cells(2).Value()
            Dim nomeregione As String = ProvinceDataGridView.Rows(i - 1).Cells(3).Value()
            AggXLMProvTSL.Text = nomeprov
            CreateNodoProvincie(i, nomeprov, nomesigla, nomeregione, Scrivi)

            Using myReader As New FileIO.TextFieldParser(
                      filecomuni)
                myReader.TextFieldType = FileIO.FieldType.Delimited
                myReader.SetDelimiters("@")
                While Not myReader.EndOfData
                    Dim currentRow As String()
                    currentRow = myReader.ReadFields()
                    Dim NumRecord As Integer = currentRow.Length

                    For Each currentField As String In currentRow
                        If currentField.StartsWith("0") Then
                            MenuToolStrip.Refresh()
                            Continue For
                        End If
                        Dim siglaprov As String = currentField.Substring(25, 2)
                        If siglaprov = nomesigla Then
                            AggiornaXLMComuniTSPB.PerformStep()
                            rec += 1
                            Dim lun As Integer = currentField.Length
                            Dim sezione As String = currentField.Substring(1, 1)
                            Dim codcomune As String
                            If sezione = " " Then
                                codcomune = currentField.Substring(2, 4)
                            Else
                                codcomune = currentField.Substring(2, 4) & sezione
                            End If
                            Dim comune As String = If(lun >= 67, currentField.Substring(29, 34).TrimEnd, currentField.Substring(29, lun - 33).TrimEnd)
                            comune = StrConv(comune, VbStrConv.ProperCase)
                            ComuniTSL.Text = comune
                            CreateNodoComuni(rec, comune, nomesigla, nomeregione, codcomune, Scrivi)
                        End If
                    Next

                    CreateNodoComuni(rec + 1, "Intera provincia", nomesigla, nomeregione, "IN" & nomesigla, Scrivi)
                    rec = 0
                    myReader.Close()
                End While
            End Using
        Next i
        Scrivi.Close()


    End Sub

    Praticamente per ogni provincia italiana cerca tutti i comuni in un file e li memorizza in un file XML. Il primo progressBar (AggiornaXLMProvTSPB) è relativo alle provincie, il secondo (AggiornaXLMComuniTSPB) è relativo ai comuni di quella provincia caricata. Il codice così impostato funziona, ma vorrei rendere la visualizzazione  di caricamento nel form più chiara. Quindi stavo pensando di attivare un evento di completamento caricamento comuni e solo dopo il caricamento della successiva provincia, ma ho difficoltà nella stesura del codice, qualche suggerimento?

grazie

5 Risposte

  • Re: Attivare due progressBar

    Non ho capito che problema hai… le barre devono andare insieme o la seconda dopo la prima…

    P.S. NON provincie ma province… non XLM ma XML…

  • Re: Attivare due progressBar

    Vorrei che l'incremento della provincia attenda il completamento della ricerca dei comuni per ogni provincia. Per esempio nella provincia di Milano sono presenti 194, quindi ricerca questi 194 comuni dal file Comuni.dat e passa alla provincia successiva. Mentre con il codice che ho scritto, almeno così mi sembra, incremento della provincia va avanti senza attendere la ricerca dei comuni.

    Spero di essere stato chiaro

    Grazie

    Giorgio

  • Re: Attivare due progressBar

    Quindi devi semplicemente fare un ciclo in cui leggi le province e un ciclo interno in cui leggi i comuni corrispondenti.

    Non vedo nel codice il ciclo di lettura delle province e quello di gestione dei comuni è un po' confuso e sovrabbondante.

  • Re: Attivare due progressBar

    Nel senso che arrivi all'ultima provincia con progress 100% ma ancora la progressbarcomuni sta caricando i comuni?

    Se si, l'avanzamento progressprovince lo fai quando progresscomuni=100%

    Prima del ciclo progressbarprovince=0

    Inizi il ciclo comuni

    Se province <100%

    Fai quello che devi fare alla fine metti

    Progressbarcomuni +1

    Se progressbarComuni =100%

    Progressprovince + 1 e progressbarcomuni=0

    E ricominci il ciclo finché progresbarprovince=100%

  • Re: Attivare due progressBar

    Pensavo di risolverlo con un evento, mi pare che non si possa fare, pertanto lo lascio cosi.

    Grazie a tutti per l'aiuto

Devi accedere o registrarti per scrivere nel forum
5 risposte