2012-08-31 45 views
1

我正在開發一個程序在c#im卡住這個問題。如何打開特定目錄對話框?

我想顯示指向特定目錄的對話框。

我知道有OpenDialogFolder和SaveDialog,但我不想保存或打開任何文件,我只想打開特定的目錄對話框。

喜歡這個截圖:

enter image description here

+0

@Musa不是FolderBrowserDialog好嗎? –

+0

@Surfbutler我注意到這裏的一些人回答問題只是爲了得到積分,而不是試圖真正幫助。因此,並不總是可以接受答案。 =) –

+0

同意,這就是爲什麼我說'有用的答案'。 – Surfbutler

回答

3

看起來你只是想打開Windows資源管理器的副本。

Process.Start(@"C:\Temp\"); 

默認的Windows外殼程序,在命令行上給出這樣的命令(或行爲的快捷方式:您可以通過簡單地調用的Process.Start(),並沒有文件名僅指定一個文件夾路徑做或運行命令)是打開Windows資源管理器以顯示指定路徑的內容。

現在,Windows資源管理器是一個外部進程,您正在啓動,然後讓它執行它的操作。因此,它不會像模態對話框那樣表現出來,就像阻止對話框失去焦點到另一個窗口一樣。但是,可以通過將Process.Start(一個Process)的結果分配給一個變量,然後在該Process上調用WaitForExit()方法而不使用參數來模仿對話框中的「無法執行應用程序的其他任何操作」行爲。這將阻止應用程序的主線程,直到用戶關閉您打開的資源管理器窗口。這並不完美;通過阻塞線程,應用程序不會響應任何請求來繪製自己或做任何其他基本的事情,即使對話框中斷的窗口仍然會這樣做,並且您仍然可以在技術上「激活」您用來啓動Windows資源管理器的窗口將把它帶到Windows資源管理器的前面。資源管理器窗口也可以最小化(對話框通常不允許),並且你可以做的事情不多,以防止這種情況發生。

+0

謝謝那正是我想要的 – emooofof

+0

+1的正確解釋。 – LarsTech

+0

不用擔心@LarsTech;直到我看到他的截圖之前,你的回答纔是我最初想到的。 – KeithS