C# %temp%位置的OpenFileDialog.RestoreDirectory失败?缺陷或特征
在我的应用程序中,我使用OpenFileDialog从临时位置%temp%选择了一个文件。现在,当我再次使用OpenFileDialog时,它会从其他位置打开。如果选择了除temp以外的任何文件夹,此功能工作正常 这是一个bug还是一个功能或技术限制 我写了这段代码C# %temp%位置的OpenFileDialog.RestoreDirectory失败?缺陷或特征,c#,.net,C#,.net,在我的应用程序中,我使用OpenFileDialog从临时位置%temp%选择了一个文件。现在,当我再次使用OpenFileDialog时,它会从其他位置打开。如果选择了除temp以外的任何文件夹,此功能工作正常 这是一个bug还是一个功能或技术限制 我写了这段代码 public string[] OnOpenFile(string filetype) { string strReturn = null; string[] strFilename = null; Syst
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;
}
您可以使用在中记录的InitialDirectory属性
在您的示例中:
fdlg.InitialDirectory = Path.GetTempPath();
在LinqPad中运行此C程序会产生所需的结果
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,然后将所选目录保存到temp.,然后再次使用InitialDirectory重设它。GetTempPath也无法处理InitialDirectory。这无疑是一项功能。这不是问题,您的用户永远不会这样做。不要强迫他这么做。@HansPassant:你的用户永远不会这么做。不要强迫他这么做。。。。他不会做什么,我应该强迫他做什么。