2009-10-28 10 views
6

Ich mache eine Software, die NUR in der Lage Menschen erlauben, Dateien und Ordner mit dem OpenFileDialog, die im selben Verzeichnis wie das Programm und in tieferen Ordnern sind, auszuwählen. Ich möchte nicht, dass der OpenFileDialog Objekte außerhalb des aktuellen Verzeichnisses des Programms auswählen kann. Ist das in C# mit dem OpenFileDialog möglich?C# OpenFileDialog Sperre zum Verzeichnis

Bitte lassen Sie mich wissen

Dank

+0

von ‚Openfile Sperre Verzeichnisbaum‘ Retagged – pyrocumulus

+2

ich weiß, dass diese Dialoge außer Kraft gesetzt werden können und angepasst .. check this out – Letterman

Antwort

1

Sie können überprüfen, ob der Pfad

ausgewählt korrekt nach ist

wenn es nur ihn akzeptieren oder senden Meldungsfeld sagen Sie anderes Verzeichnis auswählen

1

Ich fürchte, Sie können es nicht. Die meisten Personen haben ihren eigenen benutzerdefinierten Dialog für dieses Szenario erstellt.

+0

Dies richtig zu sein scheint. http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ae322891-fd55-4027-ae4f-53100ae32852 – RCIX

2

Ich sehe keine Out-of-the-Box-Unterstützung durch das OpenFileDialog Control. Sie können jedoch Folgendes versuchen:

Setzen Sie die InitialDirectory-Eigenschaft auf Ihren Programmpfad. Wenn ein Benutzer dann einen bestimmten Pfad außerhalb Ihres Programmpfads auswählt, verwenden Sie das FileOk-Ereignis, um dies zu überprüfen und ihn zum InitialDirectory zurückzubringen.

Wenn Sie viel mehr Kontrolle wollen, dann müssen Sie Ihren benutzerdefinierten Dialog schreiben.

1

Dies ist, wie ich es tat.

openFileDialog1.InitialDirectory = Path.Combine(Path.GetDirectoryName(Application.StartupPath), "FolderName"); 

     if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     {    
       while(Path.GetDirectoryName(openFileDialog1.FileName) != Path.Combine(Path.GetDirectoryName(Application.StartupPath), "FolderName")){ 

        MessageBox.Show("Please select .EXE which is in the default folder", "Wrong folder", MessageBoxButtons.OK, MessageBoxIcon.Information); 
       openFileDialog1.ShowDialog(); 

      }      
     }