2009-10-28 106 views
6

我正在製作一個軟件,它只需要允許人們使用OpenFileDialog來選擇文件和文件夾,這些文件和文件夾位於與程序相同的目錄中,並位於深層文件夾中。我不希望OpenFileDialog能夠選擇程序當前目錄之外的東西。這可能在C#中使用OpenFileDialog來完成嗎?C#OpenFileDialog鎖定目錄

請讓我知道

感謝

+0

從「打開文件對話框鎖目錄樹」 – pyrocumulus 2009-10-28 08:37:06

+2

重新標記我知道這些對話可以被覆蓋,並定製..看看這個 – Letterman 2009-10-28 08:38:14

回答

1

您可以檢查是否路徑是正確的選擇之後

如果它只是接受或發送消息框告訴他,你選擇不同的目錄

1

恐怕你不能。大多數人爲此場景創建了自己的自定義對話框。

+0

這似乎是正確的。 http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ae322891-fd55-4027-ae4f-53100ae32852 – RCIX 2009-10-28 08:41:45

2

我沒有看到OpenFileDialog控件支持的任何開箱即用功能。但是,您可以嘗試以下操作:

將InitialDirectory屬性設置爲程序路徑。然後,如果用戶選擇了程序路徑之外的特定路徑,請使用FileOk事件來檢查該路徑並將其返回到InitialDirectory。

如果你想要更多的控制,那麼你將不得不編寫自定義對話框。

1

這是我做到了。

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(); 

      }      
     }