Originariamente inviato da alka
Direi che vedere un po' di codice non sarebbe male...
il form ha solo questi 3 metodi

codice:
    Private Sub frmsetup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '
        '   GESTIONE MODELLI DI STAMPA
        '
        Dim search As New DirectoryInfo(Application.StartupPath & "\modelli") 'Effettuo la ricerca dei modelli
        Dim files() As System.IO.FileInfo 'Faccio un vettore che conterrà la lista di file contenuti in una directory
        Dim i As Integer

        files = search.GetFiles("*.pwm") 'Elenco i file *.pwm della directory modelli

        ReDim Preserve ins(UBound(files)) 'ridichiaro gli oggetti in base al numero di elementi del vettore

        For i = 0 To UBound(files) 'Controllo tutti i modelli
            Try
                Dim pat As StreamReader = files(i).OpenText 'Apro il file .pwm per vederne il contenuto
                Dim b, paramfile() As String 'Buffer e vettore per lo split dei dati

                ins(i) = New Pattern 'Assegno un nuovo oggetto di tipo Pattern

                Do
                    b = pat.ReadLine()   'Leggo la riga
                    If b = Nothing Then Exit Do 'Se la riga è vuota esce dal do
                    paramfile = b.Split(":")    'Splitto la stringa ad ogni ':'
                    Select Case paramfile(0)    'Controllo la prima parte della stringa divisa
                        Case "FILE" : ins(i).PatternFileName = paramfile(1) '
                        Case "LIMIT" : ins(i).PatternLenght = Val(paramfile(1)) ' Riempio l'oggetto Pattern con i dati letti dal file
                        Case "NAME" : ins(i).PatternName = paramfile(1)
                    End Select
                Loop Until b = Nothing
                ins(i).PatternConf = files(i).Name
                pat.Close() 'kiudo il file
            Catch ex As IOException 'Eccezione attivata nel caso in cui ci siano errori di lettura
                If MsgBox(ex.Message, MsgBoxStyle.Exclamation + MsgBoxStyle.RetryCancel, "Errore durante la lettura del file") = MsgBoxResult.Retry Then i = i - 1
            End Try
        Next i

        Dim j As Integer = UBound(ins)
        Dim def As Integer = -1

        If j = -1 Then  'controllo se NON ci siano modelli di stampa installati
            MsgBox("Non è stato trovato alcun modello di stampa. Si consiglia di reinstallare il programma", MsgBoxStyle.Critical, "Errore critico")
        Else
            For i = 0 To j  'inserisco i modelli di stampa trovati
                Dim defaultpattern As String = SetupIniFile.ReadValue("pattern", "default", "")
                cmbpattern.Items.Add(ins(i).PatternName) 'inserisco un modello di stampa
                If defaultpattern = ins(i).PatternConf Then def = i 'controllo se è il modello di stampa predefinito
            Next
        End If
        If def <> -1 Then cmbpattern.SelectedIndex = def 'seleziono il modello di stampa impostato di default

        '
        '   GESTIONE CONTABILITA'
        '
        cmbcase.SelectedIndex = Val(SetupIniFile.ReadValue("Contabilita", "AggiungiPreventivo", ""))
    End Sub

    Private Sub cmdAnnulla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnnulla.Click
        Me.Close()
    End Sub

    Private Sub cmdOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOK.Click
        SetupIniFile.WriteValue("pattern", "default", ins(cmbpattern.SelectedIndex).PatternConf)          'imposto il nuovo modello di stampa predefinito
        SetupIniFile.WriteValue("Contabilita", "AggiungiPreventivo", cmbcase.SelectedIndex.ToString)      'imposto il nuovo caso per la contabilità
        SetupIniFile.FlushToDisk()                                                                        'scrivo fisicamente il file ini sull'harddisk
        Me.Close()
    End Sub


ins è una var globale