2012-07-16 313 views
3

我有一個OpenFileDialog,當用戶第一次使用該應用程序時,單擊「瀏覽」時應該打開一個指定路徑,即%ProgramData%。 對於所有連續的術語,它應該打開最後使用的文件夾。OpenFileDialog路徑問題

我想:

 OpenFileDialog ofd = new OpenFileDialog(); 
     ofd.InitialDirectory = "C:\ProgramData"; 
     ofd.RestoreDirectory = true; 
     ofd.FileName = ""; 
     DialogResult dr = ofd.ShowDialog(); 

這裏的問題是,它開闢了「C:\ ProgramData」每一次,就算我改變路徑,並同時尋找所需的文件。 是否有一個特定的屬性,我應該設置或我必須以編程方式跟蹤OpenFileDialog的使用情況並相應地設置路徑?

+0

什麼ü通過第一次是什麼意思?第一次在應用程序加載或第一次使用後使用應用程序。 – ZafarYousafi 2012-07-16 11:49:33

+0

這是用戶第一次使用該應用程序。對不起,不清楚。 – dushyantp 2012-07-16 11:54:15

+2

它每次打開「C:\ ProgramData」,因爲你用InitialDirectory告訴它。 – eMi 2012-07-16 11:55:48

回答

2

試試這個:

要重設intialdirectory到C:\ ProgramData按鈕點擊

public partial class Form1 : Form 
    { 
      OpenFileDialog ofd = new OpenFileDialog(); 

     public Form1() 
     { 
      InitializeComponent(); 
      ofd.InitialDirectory = "C:\\ProgramData"; 
     }  
     private void button1_Click(object sender, EventArgs e) 
     {      
      DialogResult dr = ofd.ShowDialog(); 
      ofd.InitialDirectory = null; 
     }  
    } 
+0

你發現了這個問題,我每次都重置初始目錄。我稍微改變了你的代碼,它終於爲我工作。謝謝。 – dushyantp 2012-07-16 15:53:25

-1

簡單,

FileDialog.RestoreDirectory物業true。當重新打開文件對話框時,它找到最後一個目錄。

例子:

ofd . RestoreDirectory = true; 
+0

不會工作,因爲OpenFileDialog.RestoreDirectory沒有實現 – ZafarYousafi 2012-07-16 11:58:33

+0

什麼...開玩笑吧:) – 2012-07-16 12:02:29

+0

這是什麼VS告訴你當你懸停在屬性。不知道爲什麼它說話,似乎是真的,因爲即使房產價值發生變化,我也沒有看到任何變化。 – ZafarYousafi 2012-07-16 12:13:25

2

做這樣的事情:

// save your current directory 
string currentDirectory = Environment.CurrentDirectory; 

// create an OpenFileDialog and set RestoreCurrentDirectory to false. 
OpenFileDialog ofd = new OpenFileDialog(); 
ofd.RestoreCurrentDirectory = false; 
ofd.ShowDialog(); 

// save the selected directory locally. 
string selectedDirectory = Environment.CurrentDirectory; // OpenFileDialog changed this value. 
Environment.CurrentDirectory = currentDirectory; // reset the property with the first value. 

// next time you open an OpenFileDialog, set the InitialDirectory property 
OpenFileDialog ofd2 = new OpenFileDialog(); 
ofd.InitialDirectory = selectedDirectory; // set the InitialDirectory to what it was last time an OpenFileDialog was opened. 
ofd.ShowDialog(); 

RestoreDirectory物業可以確保打開文件對話框關閉之前在Environment.CurrentDirectory值將被重置。如果RestoreDirectory設置爲false,則Environment.CurrentDirectory將被設置爲OpenFileDialog上次打開的任何目錄。

+0

也許它會工作,我選擇用Vinod的想法實施(檢查選定的答案)。我必須對現有代碼進行簡單的更改。感謝您的時間,這很有幫助。 – dushyantp 2012-07-16 15:54:18

+0

我只是在Win7 64和VS 2010上做了一些測試,並且據我所知,OpenFileDialog對Environment.CurrentDirectory完全沒有影響。 – 2013-01-08 22:42:29