0

在我的应用程序中,我曾经OpenFileDialog从临时位置 (%temp%) 中选择一个文件。现在,当我再次使用时OpenFileDialog,它会从其他位置打开。如果选择了 temp 以外的任何文件夹,则此功能可以正常工作。

这是错误还是功能或技术限制?

我写了这段代码。

public string[] OnOpenFile(string filetype)
{
    string strReturn = null;
    string[] strFilename = null;
    System.Windows.Forms.OpenFileDialog fdlg = new System.Windows.Forms.OpenFileDialog();
    fdlg.Title = "Select an Excel file to Upload.";
    fdlg.Filter = filetype;
    fdlg.RestoreDirectory = true;
    if (fdlg.ShowDialog() == DialogResult.OK) 
    {
        strFilename = fdlg.FileNames;
    }
    return strFilename;
}
4

1 回答 1

2

您可以使用http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.initialdirectory.aspx中记录的InitialDirectory属性

在你的例子中:

fdlg.InitialDirectory = Path.GetTempPath();

在 LinqPad 中运行这个 C# Proram 会产生想要的结果

void Main()
{
OnOpenFile();
OnOpenFile();
OnOpenFile();
}
    public string[] OnOpenFile()
{
    string strReturn = null;
    string[] strFilename = null;
    System.Windows.Forms.OpenFileDialog fdlg = new System.Windows.Forms.OpenFileDialog();
    fdlg.Title = "Select an Excel file to Upload.";
    //fdlg.Filter = filetype;
    fdlg.InitialDirectory = Path.GetTempPath();
    fdlg.RestoreDirectory = true;
    if (fdlg.ShowDialog() == DialogResult.OK) 
    {
        strFilename = fdlg.FileNames;
    }
    return strFilename;
}

如果你评论

fdlg.InitialDirectory = Path.GetTempPath();

你可以实现想要的行为。

每次在文件夹中选择文件时,都会打开 OpenFileDialog 中的该文件夹。如果您按取消,则必须以不同的方式处理您选择的路径 - 在某些字符串变量中,然后当您再次打开 OpenFileDialog 时,您将设置 InitialDirectory

于 2013-06-15T08:01:45.570 回答