2012-04-30 3 views
6

UPDATE: Sembra che non fosse chiaro in quale fosse il mio problema. Anche la modifica di John Arlen al mio titolo sembra causare più di un malinteso. Il titolo è stato modificato in "Come posso ottenere una cartella o un percorso di file?" che non è quello che sto cercando. Capisco che c'è una finestra di dialogo che funziona con i file e un'altra che funziona con le cartelle. So che ciascuna di queste finestre di dialogo può restituire un percorso di una cartella o di un file. Ho affermato che non sapevo esattamente come ottenere un percorso di file, ma non mi è stato d'aiuto anche se sapessi come farlo.Come posso ottenere una cartella o un percorso file attraverso una singola finestra di dialogo di WinForm?

come affermato nella mia domanda iniziale:.

"Sto avendo all'utente di selezionare una cartella o un file attraverso alcune dialogo non so se il percorso apparterrà ad una cartella o un file. Quando l'utente preme il pulsante "Apri", voglio che la directory o il percorso del file attualmente selezionato siano memorizzati in una stringa. "

Quello che intendevo dire era che volevo usare un dialogo che può o non può esistere. Non so se l'utente è dopo un file o una cartella. L'utente lo sa, ma l'utente non conosce il percorso. Questo è il motivo per cui viene usata una finestra di dialogo. L'utente cercherà il file o la cartella necessari, quindi farà clic su "Apri". Ha più senso che venga utilizzato un singolo dialogo per questo per le mie esigenze. Volevo vedere se esisteva un dialogo di questo tipo in quanto la mia esperienza con .NET Framework è limitata.

La risposta di Jared Kells era quasi esattamente quello che stavo cercando. Dopo aver letto ciò che ha fornito, sembra che tale dialogo non esista. Dovrò fornire la mia implementazione.

Dal momento che venire con la mia implementazione sarà probabilmente lungo e difficile, di cui farò a meno per ora. Aspetterò un paio di giorni per scegliere una risposta nel caso in cui qualcuno fornisca una risposta eccezionalmente utile.

Grazie a coloro che hanno contribuito anche se non era proprio quello che cercavo.

CONTENUTO ORIGINALE:

Sto cercando un modo per ottenere il percorso del file di una cartella o un file. Ho giocato con OpenFileDialog e FolderBrowserDialog senza molto successo. Sono stato in grado di ottenere i percorsi della cartella utilizzando FolderBrowserDialog.SelectedPath. Usando la classe OpenFileDialog, non ero in grado di capire come ottenere il percorso del file.

Anche se potessi capirlo, sono ancora in difficoltà. Sto facendo in modo che l'utente selezioni una cartella o un file attraverso una finestra di dialogo. Non so se il percorso apparterrà a una cartella o un file. Una volta che l'utente preme il pulsante "Apri", voglio che la directory o il percorso del file attualmente selezionato siano memorizzati in una stringa. Sembra che ognuna di quelle classi che ho usato siano bloccate con file o cartelle.

Ciò è possibile con le finestre di dialogo di WinForms? Preferirei non dover scrivere il mio dialogo in questo momento.

+0

Hai guardato tutto nello spazio dei nomi System.IO.Path? Ci sono molte cose buone lì dentro. – WildCrustacean

+1

OpenFileDialog.FileName – SimpleVar

+0

http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.attributes.aspx ti dirà se è una directory – Patrick

risposta

2

Vedere questa domanda per alcuni metodi di visualizzazione di una finestra di dialogo comune che può selezionare sia file che cartelle.

Select either a file or folder from the same dialog in .NET

Sulla base di risposte alla domanda di cui sopra ho creato un semplice esempio di come fare questo in C# qui: https://github.com/jkells/folder-browser-dialog-example

Si dovrebbe essere in grado di basta copiare FolderBrowserDialogEx.cs nel progetto.

+0

Questo è praticamente quello che ero cercando. Il problema ora è che non penso che sarò in grado di implementare facilmente la mia versione con le mie attuali competenze/conoscenze. Non ho mai lavorato con .Net Framework per molto tempo e ho già riscontrato alcune limitazioni. L'ho trovato interessante perché l'avevo sempre pensato come un'enorme raccolta di codice che richiederebbe un'eternità per apprendere. Sembra così vasto, ma è ancora insufficiente in alcuni punti. – Cheese

+0

Hey Cheese, ho aggiornato la domanda con un esempio. –

7
openFileDialog1.ShowDialog(); 
string filePath = openFileDialog1.FileName; 

Vi darà il percorso per un file.

folderBrowserDialog1.ShowDialog(); 
string folderPath = folderBrowserDialog1.SelectedPath; 

per una cartella.

string path = ... 
if(File.Exists(path))...//is file 
if(Directory.Exists(path))...//is folder 

per verificare di cosa si tratta.