visual studio 2012 opendialog卡在默认目录上

时间:2013-03-26 15:01:58

标签: visual-studio openfiledialog

我正在visual studio ultimate 2012上编写一个基于Windows窗体的应用程序。我输入了一个opendialog以打开和读取文件。这是代码: -

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

openFileDialog1.InitialDirectory = "c:\\" ;
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);
    }
}

}

但是每当我尝试运行它时,当我从浏览器窗口中选择一个文件时,它会向我显示一个filenotfound异常,因为它在默认目录中查找该文件(位于Documents / VisualStudio / Projects / WindowsFormApplication / bin中) / debug / openFileDialog1),不在我指定的目录中。请帮忙!!

1 个答案:

答案 0 :(得分:1)

问题是以下一行

openFileDialog1.RestoreDirectory = true;

这会导致在关闭对话框后将当前目录重置为原始目录。看起来OpenFile方法正在使用相对路径,因此尝试打开对话框开始的文件,而不是它结束的位置。

尝试删除RestoreDirectory设置,并在使用文件

后手动重置路径