59 messaggi dal 21 luglio 2006
Avrei la necessità di gestire due ProgressBar, nel senso che al completamento del primo si attivi l'altro. Con il codice sotto leggo l'elenco delle provincie presenti in un DataGridView e con ciclo For Next attivo il 1° ProgressBar delle Provincie (AggiornaXLMProvTSPB), sulla base della Provincia letta cerco in un file tutti i comuni di quella provincia e attivo il 2° ProgressBar ( AggiornaXLMComuniTSPB) dei Comuni ricercati

Private Sub AggiornaComuni()

        Dim NumProv As Integer = ProvinceDataGridView.Rows.Count - 1

        AggXLMProvTSL.Visible = True
        AggiornaXLMProvTSPB.Visible = True
        ComuniTSL.Visible = True
        AggiornaXLMComuniTSPB.Visible = True

        AggXLMProvTSL.Visible = True
        AggiornaXLMProvTSPB.Visible = True
        AggiornaXLMProvTSPB.Value = 0
        AggiornaXLMProvTSPB.Maximum = NumProv
        AggiornaXLMProvTSPB.Step = 1

        NotaAggTSL.Visible = True

        Dim filecomuni As String = Application.StartupPath & "\Comunt.dat"
        Dim rec As Integer = 0
       
        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)
           
            AggiornaXLMComuniTSPB.Maximum = 385 'ComuniDataGridView.RowCount
            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
                            rec += 1
                            AggiornaXLMComuniTSPB.Value = rec

                            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()
        My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\ProvComuni.xml", FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently)
        My.Computer.FileSystem.RenameFile(Application.StartupPath & "\ProvComuni_tmp.xml", "ProvComuni.xml")
        Ricarica_ProvComuni("AG")

        MsgBox("Database XLM aggiornato con successo", MsgBoxStyle.Information, "Aggiornamento")

       End Sub 


In questo modo il 1° ProgressBar va avanti senza attendere la conclusione del 2°. E' possibile mettere in pausa il 1° ProgressBar finché non sono stati ricercati tutti i comuni della Provincia selezionata?
Spero di essere stato chiaro
Saluti
Giorgio

Giorgio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.