以编程方式更改打开文件对话框中的目录

时间:2010-05-03 07:33:16

标签: c# winforms openfiledialog

我有一个带有ComboBox的自定义OpenFileDialog(VS2008,C#,Windows Forms)。 ComboBox将包含用户可以选择的路径列表。

我的问题是,有没有办法可以将Open File Dialog中的目录更改为指向组合框所选项目中的路径。

InitialDirectory仅在我打开对话框之前工作,我想在对话框打开后以编程方式更改目录。

由于

3 个答案:

答案 0 :(得分:1)

如果您使用Vista或Windows 7与.NET 3.5 SP1,我建议您使用OpenFileDialog上的CustomPlaces属性而不是自定义组合框。

请参阅此MSDN文章(针对WPF):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

如果您可以确定要发送到窗口的消息,可能的做法是将文件名文本字段填入要切换的目录,以模拟单击确定按钮。如果执行此操作,对话框将切换到该目录。

向此窗口发送消息可能要求您不要直接使用OpenFileDialog,而是将它所基于的抽象FileDialog类子类化。

答案 1 :(得分:-1)

只需设置openFileDialog1的InitialDirectory属性

即可
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);
        }
    }
}

答案 2 :(得分:-1)

正如已经说过的,InitialDirectory事先工作,但为什么你要更改文件夹后呢? FileOpenDialog是一个模态对话框,因此用户不能使用除对话框之外的任何其他应用程序。你不想设置文件夹的好处和原因是什么?看来你使用错误的工具来完成工作。