Originariamente inviato da fifiddu
grazie Alka ma non ci ho capito lo stesso, insomma sembrava facile mettere su due righe di codice ma nulla, devo ancora approfondire i miei studi evidentemente.
Alka dice giusto.
La finestra corretta da usare è la BrowseForFolder (sfoglia per cartelle) che restituisce il percorso della cartella selezionata dall'utente:
codice:
Using fbdialog As New FolderBrowserDialog
With fbdialog
.RootFolder = Environment.SpecialFolder.Desktop
.Description = "Seleziona la cartella"
If .ShowDialog = DialogResult.Cancel Then Exit Sub
' ricavo l'elenco dei files
Dim dirInfo As New IO.DirectoryInfo(.SelectedPath)
Dim files = dirInfo.GetFiles()
ComboBox1.Items.Clear()
' popolo ComboBox1
For Each theFile In files
ComboBox1.Items.Add(theFile.Name)
Next
End With
End Using
Per contro, è anche vero che tale finestra è meno user-friendly rispetto alla OpenFileDialog, nel senso che l'utente vede solo le cartelle, ma in effetti è quello che chiedi tu.
Nella OpenFileDialog, invece, può avere altre informazioni sui file (ma che comunque non sono determinanti ai fini della selezione della cartella).
Usando un OpenFileDialog si potrebbe 'aggirare' il problema così:
- apri la finestra.
- selezioni un file, OK per confermare.
- ricavi dal file selezionato il percorso assoluto.
- con quello popoli il combobox:
codice:
Using ofd As New OpenFileDialog
If ofd.ShowDialog() = Windows.Forms.DialogResult.Cancel Then Exit Sub
Dim sPath = IO.Path.GetDirectoryName(ofd.FileName) 'ricavo il percorso dal nome del file
Dim dirInfo As New IO.DirectoryInfo(sPath) ' ricavo informazioni sul percorso
Dim files = dirInfo.GetFiles() ' acquisisco l'elenco dei file
Dim thisFile As FileInfo ' fornisce informazioni sul singolo file
' popolo ComboBox1
For Each thisFile In files
ComboBox1.Items.Add(thisFile.Name)
Next
End Using