2012-01-09 23 views
10

Io uso SaveFileDialog per selezionare il percorso in cui voglio salvare un file. Ho impostato InitialDirectory in una cartella, ma voglio limitare le posizioni di salvataggio a quella cartella o sottocartelle di quella cartella. È possibile?C# SaveFileDialog nella cartella specifica

SaveFileDialog dialog = new SaveFileDialog(); 
dialog.InitialDirectory = "SomePath"//this is the path that I want to be root folder 
+0

Ci dispiace, ma non riesco a pensare a un caso in cui questo dovrebbe essere utile. O date all'utente il controllo su dove salvare o semplicemente salvate il file. Potresti spiegare perché vuoi farlo? – M0rgenstern

+1

Ho un editor che viene utilizzato per modificare i file da un pacchetto (verrà copiato su un dispositivo così com'è). Non voglio consentire all'utente di salvare i file in un'altra cartella: non verranno copiati alla fine e ciò potrebbe causare errori strani. – Felics

risposta

9

No, non è possibile.

Non è possibile impostare direttamente come proprietà su SaveFileDialog. Ma puoi provare a farlo usando l'evento FileOk per convalidare se il file si trova in quella directory e in caso contrario annullare l'evento!

dialog.FileOk += 
    delegate (object sender, CancelEventArgs e) 
    { 
     if (dialog.FileName is in wrong directory) 
     { 
      e.Cancel = true; 
     } 
    }; 

Come già detto, la prossima opzione migliore è creare il proprio Dialogo!

+0

Non voglio cancellare se l'utente seleziona il file da un'altra cartella, non voglio lasciargli scegliere altra cartella. – Felics

+1

Annullerai la selezione, non annullerai la finestra di dialogo. – Kolky

+0

Questa è stata una risposta molto utile, grazie. – MikeMalter

0

Alcune soluzioni che vengono in mente sono:

display un errore dopo la selezione del file

Non bello come prevenire l'utente in primo luogo, ma non ci vuole un sacco di codice ed è piuttosto semplice.

costruire il proprio schermo di selezione dei file

Molto doloroso per fare apparire come tutto ciò che l'utente è abituato. Prende molto codice.

0

Quello che posso pensare potrebbe essere off-topic perché non è correlato tanto con la programmazione e potrebbe essere difficile.

Durante l'installazione dell'applicazione, è necessario creare un utente specifico su Windows solo per la propria applicazione.

Di quanto tu possa iniziare tu sei App. come quell'utente che usa App. File manifest.

Dopodiché è possibile assegnare a tale utente specifico il permesso di scrivere solo nella cartella principale, in questo modo il sistema operativo lo controllerà.

PS: Non penso che questa soluzione pagherà da sola, ma potrebbe funzionare.

Salute

Problemi correlati