Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.net] - Listbox e Listview gestione e XML settings

    Buongiorno,
    mi sto avvicinando ora alla programmazione ad oggetti, ma ho qualche difficoltà generale ad applicare la teoria e nell'uso degli oggetti.

    Devo creare un programma che mi visualizzi in una listbox o Listview una serie di etichette corrispondenti a dei file nominati come annomesegiorno.sep, che mi dia la possibilità di selezionarli e copiarli in una cartella di destinazione.

    Es. Nome dei file: 20110423.sep
    Ex. Nome delle etichette nella Listbox o Listview: 23 Aprile 2011

    Quando li seleziono sella listbox o Listview per copiarli però avrei necessità che si selezionasse il file e non l'etichetta da me creata.

    Devo prima creare due array con in uno i nomi dei file e nell'altro le etichette corrispondenti e linkarli in qualche modo?Creo un dataset?o come posso gestirli?

    Procedura estrapolazione giorno mese anno dal nome file senza estensione(strYearMonthDay):

    codice:
    Public Shared Function DayConvert(ByVal strYearMonthDay, ByRef strYearMonthDayFull)
            Dim strDay As String
            Dim strMonth As String
            Dim strYear As String
    
            'recupera anno, mese e giorno e compone la stringa "23 Aprile 2011"
            strYear = strYearMonthDay.Substring(0, 4)
            strMonth = strYearMonthDay.Substring(4, 2)
            strDay = strYearMonthDay.Substring(6, 2)
            strYearMonthDayFull = strDay & " " & MonthName(strMonth) & " " & strYear
            Return strYearMonthDayFull
        End Function
    Procedura popolamento lista con nomi etichette(strYearMonthDayFull):

    codice:
    Public Shared Sub AddLst(ByVal strPathSource, ByVal strFileExtension, ByVal lstFileSep, _
                                 ByVal lstWFileSep, ByVal strYearMonthDay, ByVal strYearMonthDayFull, ByRef strToday)
            'Apri la cartella di origine ed elenca i file
            Dim strExtension As String          'ESTENSIONE dei file nella cartella
            'Analizza ciascun file e se ha l'estensione corretta popola la lista
            For Each strFiles As String In My.Computer.FileSystem.GetFiles(strPathSource)
                strExtension = System.IO.Path.GetExtension(strFiles)
                If strExtension = "." & strFileExtension Then ' Se sono file SEP mostrali nella lista
                    strYearMonthDay = System.IO.Path.GetFileNameWithoutExtension(strFiles)
    
                    'Richiama la funzione per convertire il nome file in data
                    ClassOperazioni.DayConvert(strYearMonthDay, strYearMonthDayFull) 'Converte i file in stringa giorno Mese anno es. 23 Settembre 2011
    
                    lstFileSep.Items.Add(strYearMonthDayFull)
                    'ClassOperazioni.oggi()
                    'ClassOperazioni.colora(lstWFileSep, strToday, strYearMonthDay, strYearMonthDayFull)
                    lstWFileSep.Items.Add(strYearMonthDayFull)
                End If
            Next
        End Sub
    Procedura copia File:

    codice:
    Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCopyFile.Click
    
            Dim i As Integer    'variabile contatore
            ' assegna TOTALE file selezionati (lstFileSep.SelectedIndices.Count)
            intTotFilesSelected = lstFileSep.SelectedItems.Count
    
            'Se la lista contiene file selezionati procede alla copia
            If intTotFilesSelected > 0 Then
                For i = 0 To intTotFilesSelected - 1
                    MsgBox("intTotFilesSelected: " & intTotFilesSelected)
                    'inizializza la variabile con gli elementi selezionati - uno alla volta
                    strFileSelected = lstFileSep.SelectedItems(i)
                    'MsgBox("strFileSelected: " & strFileSelected)
                    'preleva l'indice dell'oggetto selezionato
                    strFileSelectedIndices = lstFileSep.SelectedIndices(i)
                    'MsgBox("strFileSelectedindices: " & strFileSelectedIndices)
                    'preleva il nome del file
                    strFileSelectedName = System.IO.Path.GetFileName(strFileSelected)
                    'MsgBox("strFileSelectedName: " & strFileSelectedName)
                    'Fa la copia del file Nella cartella di destinazione
                    My.Computer.FileSystem.CopyFile(strFileSelectedName, strPathDestination)
                    '& strFileName) _
                    'FileIO.UIOption.AllDialogs, _
                    'FileIO.UICancelOption.DoNothing)
                Next
    
                MsgBox("File COPIATI correttamente...")
                'richiama funzione pulisci la lista
                classGestioneLista.ClearLst(lstFileSep, lstWFileSep)
                'richiama funzione popola la lista
                classGestioneLista.AddLst(strPathSource, strFileExtension, lstFileSep, lstWFileSep, strYearMonthDay, strYearMonthDayFull, strToday)
    
            End If
        End Sub
    Un altro quesito che avrei è:

    Prelevo le impostazioni del programma da un file XML; per caricare le impostazioni è preferibile usare un dataset, un array o altro?

    Grazie
    Paolo

  2. #2
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Io ti consiglierei di usare un dataset ma non è detto che sia la soluzione migliore...
    Per fare "esercizio" ho scritto qualcosa prendendo spunto da quello che vorresti fare ma con quello che conosco...
    Il dataset ha tre colonne: nome del file con estensione, nome del file in "data", percorso completo del file.
    Per ottenere informazioni sui file ed elaborarle ho usato FileInfo e DirectoryInfo, mentre per convertire il nome del file in "23 Aprile 2011" ho usato le funzioni di DateTime aggiungendo una specie di log per i file con l' estensione indicata che non rispettano un formato data valido, ad esempio 20110230...o comunque che non rispecchiano il formato yyyyMMdd.
    La listbox la riempo impostando come datasource il dataset e scegliendo la colonna con i dati che servono.
    Per la copia ho "copiato" il tuo codice per ciclare gli elementi selezionati nella listbox, il resto lo prelevo dal dataset in base all' indice dell' elemento della listbox.
    Il programma è composto da una form, tre button(seleziona cartella, elabora file, copia), un FolderBrowserDialog, una listview e circa 80 righe di codice, se vuoi dargli un' occhiata chiedi pure...
    Per le impostazioni non saprei. Dipende da quante sono, di che tipo sono, da come le usi e come/quando le modifichi.

  3. #3
    Grazie per la risposta, purtroppo la leggo solo ora...anche se il progettino si è arenato in attesa di tempo per rimettersi a studiare.
    Grazie ancora.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.