2009-05-10 31 views
90

Có cách nào để đặt thư mục ban đầu của hộp thoại trình duyệt thư mục vào một thư mục không đặc biệt không? Đây là những gì tôi hiện đang sử dụng Đặt vị trí bắt đầu hộp thoại trình duyệt thư mục

fdbLocation.RootFolder = Environment.SpecialFolder.Desktop;
nhưng tôi muốn sử dụng một đường dẫn tôi đã lưu trữ trong một chuỗi một cái gì đó như thế này
fdbLocation.RootFolder = myFolder;
Điều này gây ra lỗi "Không thể chuyển đổi 'chuỗi' thành 'System.Environment.SpecialFolder'".

Trả lời

144

Chỉ cần đặt SelectedPath tài sản trước khi gọi ShowDialog.

fdbLocation.SelectedPath = myFolder; 
+9

Lưu ý rằng nó cần thiết để đặt 'RootFolder' thành' Environment.SpecialFolder.Desktop' hoặc điều này có thể không hoạt động. –

+1

Xem Chad tài trợ trả lời dưới đây: Ông giải thích đúng rằng RootFolder phải được thiết lập, và SelectedPath phải được * dưới đây * rằng RootFolder để làm việc. –

+1

Điều này phù hợp với tôi nhưng nó không đặt trọng tâm vào thư mục. Tôi phải tự cuộn xuống và tìm thư mục được mặc định. Có cách nào để thiết lập tiêu điểm tự động khi được hiển thị không? – JoBaxter

22
fldrDialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

"Nếu tài sản SelectedPath được thiết lập trước khi hiển thị hộp thoại, thư mục với con đường này sẽ là thư mục đã chọn, miễn là SelectedPath được thiết lập để một đường dẫn tuyệt đối đó là một thư mục con của RootFolder (hoặc chính xác hơn, trỏ tới một thư mục con của không gian tên shell được đại diện bởi RootFolder). "

MSDN - SelectedPath

"Phương pháp GetFolderPath trả về địa điểm liên quan đến liệt kê này. Các địa điểm của các thư mục này có thể có giá trị khác nhau trên các hệ điều hành khác nhau, người dùng có thể thay đổi một số địa điểm, và vị trí được bản địa hóa. "

Re: Desktop vs DesktopDirectory

Desktop

"The Desktop logic chứ không phải là vị trí hệ thống tập tin vật lý."

DesktopDirectory:

"Thư mục dùng để thể chất đối tượng lưu trữ tập tin trên máy tính để bàn làm không nhầm lẫn thư mục này với các thư mục máy tính để bàn chính nó, mà là một thư mục ảo .. "

MSDN - Special Folder Enum

MSDN - GetFolderPath

+0

Đối với đường dẫn đặc biệt bạn có thể làm {{fldrDialog.RootFolder = Environment.SpecialFolder.DesktopDirectory}} – mayu

+0

Perfect. Cảm ơn bạn. Điều quan trọng là SelectedPath phải ở bên dưới RootFolder nếu hộp thoại đang trỏ đến SelectedPath khi nó mở ra. –

+0

Hành vi như sau: 'Environment.GetFolderPath (Environment.SpecialFolder.DesktopDirectory)' trả về _C: \ Users \ Myusername \ Desktop._ Sử dụng *** Mã mạo danh *** (với LogonType LOGON32_LOGON_INTERACTIVE) trả về _empty string_ – Kiquenet

25

Đặt SelectedPath tài sản trước khi bạn gọi ShowDialog ...

folderBrowserDialog1.SelectedPath = @"c:\temp\"; 
folderBrowserDialog1.ShowDialog(); 

Sẽ bắt đầu họ tại C: \ Temp

+0

Được yêu cầu đặt *** RootFolder *** ('SelectedPath được đặt thành đường dẫn tuyệt đối là thư mục con của RootFolder')? Hành vi như là: 'Environment.GetFolderPath (Environment.SpecialFolder.DesktopDirectory)' trả về _C: \ Users \ Myusername \ Desktop._ Sử dụng *** Mã mạo danh *** (với LogonType LOGON32_LOGON_INTERACTIVE) trả về _empty string_ – Kiquenet

8

Để thiết lập đường dẫn thư mục được lựa chọn và lấy thư mục mới:

dlgBrowseForLogDirectory.SelectedPath = m_LogDirectory; 
if (dlgBrowseForLogDirectory.ShowDialog() == DialogResult.OK) 
{ 
    txtLogDirectory.Text = dlgBrowseForLogDirectory.SelectedPath; 
} 
Các vấn đề liên quan