2010-05-03 81 views
0

我有一個用ComboBox自定義的OpenFileDialog(VS2008,C#,Windows窗體)。 ComboBox將有一個用戶可以選擇的路徑列表。以編程方式在打開文件對話框中更改目錄

我的問題,有沒有一種方法可以改變打開文件對話框中的目錄,以指向組合框選定項目中的路徑。

InitialDirectory只在我打開對話框之前工作,我想要一種在對話框打開後以編程方式更改目錄的方法。

感謝

+0

這將如何工作?請解釋更多。 – leppie 2010-05-03 07:36:36

回答

1

如果您使用Vista或Windows 7與.NET 3.5 SP1我建議您在OpenFileDialog上使用CustomPlaces屬性而不是自定義組合框。

見(用於WPF)這個MSDN文章:http://msdn.microsoft.com/en-us/library/microsoft.win32.filedialog.customplaces(v=VS.100).aspx

還是這個MSDN文章(適用於Windows窗體):http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.customplaces(v=VS.100).aspx

在Windows 2000和XP,也可以自定義的地方酒吧。但它更加困難,需要你使用一些C++代碼(通過CLI/C++可能是最好的)。該技巧在本MSDN文章中有詳細描述:http://msdn.microsoft.com/en-us/magazine/cc300434.aspx

如果您已經使用已添加到OpenFileDialog的組合框,但您可能只需要知道發送到對話框的Windows消息。恐怕我不知道你需要發送哪條消息。公共打開/保存對話框的令人討厭的內部Win32 API詳細信息在此處詳述如下:http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx

如果您可以確定將哪些消息發送到窗口,則可能的做法是將文件名文本字段填充到目錄你想切換到模擬OK按鈕點擊。如果你這樣做,該對話框將切換到該目錄。

將消息發送到此窗口可能會要求您不要直接使用OpenFileDialog,而是對其所基於的抽象FileDialog類進行子類化。

-1

只需設置openFileDialog1

private void button1_Click(object sender, System.EventArgs e) 
{ 
    Stream myStream = null; 
    OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

    openFileDialog1.InitialDirectory = cmbPath.SelectedValue.ToString(); 
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ; 
    openFileDialog1.FilterIndex = 2 ; 
    openFileDialog1.RestoreDirectory = true ; 

    if(openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     try 
     { 
      if ((myStream = openFileDialog1.OpenFile()) != null) 
      { 
       using (myStream) 
       { 
        // Insert code to read the stream here. 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
     } 
    } 
} 
+0

組合框以與打開的對話框相同的自定義形式嵌入。因此,設置初始目錄不會工作,因爲對話框已經打開。 – ababeel 2010-05-03 08:03:22

-1

的InitialDirectory財產前面已經說過InitialDirectory工作的前手,但爲什麼要更改文件夾後記? FileOpenDialog是一個模態對話框,因此用戶不能使用應用程序中的任何其他對象。你不想設置文件夾的好處和原因是什麼?看來你使用錯誤的工具來完成工作。

+0

組合框將包含用戶可以使用的最近使用過的路徑。它實際上是在3Ds Max中模擬FileOpen。 – ababeel 2010-05-03 08:02:06

+0

你可以發佈視頻嗎?你想要一個最近使用過的文件的歷史列表?創建自己的表單,結合使用FileOpenDialog和您自己的需求? – RvdK 2010-05-03 10:20:36

相關問題