Stream myStream = null;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 2;            openFileDialog1.RestoreDirectory = true;
            Console.WriteLine("Current Directory is {0}", Environment.CurrentDirectory);            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);
                }
            }            Console.WriteLine("Current Directory is {0}", Environment.CurrentDirectory);
上面的这行代码:openFileDialog1.RestoreDirectory = true; 我就是搞不懂,它的存在到
底起什么作用? Console.WriteLine("Current Directory is {0}", Environment.CurrentDirectory);每次输出的都是
相同的文件夹啊。MSDN : .RestoreDirectory 获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。假设用户在搜索文件的过程中更改了目录,那么,如果对话框会将当前目录还原为初始值,则值为 true;反之搜索文件的过程中如何理解?,谁能举个例子。

解决方案 »

  1.   

    openFileDialog1.RestoreDirectory = true若没有这句,在打开一个文件前、后都输出Environment.CurrentDirectory值看下,是不同的;
    有了这一句,在打开一个文件后,Environment.CurrentDirectory值仍和之前的一样,不会变化;
      

  2.   


    如果真是这样,我也就不会提问了。
    我这样:openFileDialog1.RestoreDirectory =false ;
    但是每次输出的当前文件夹路径都是相同的!?WHY
      

  3.   

    谁能告诉我openFileDialog1.RestoreDirectory = true; 在程序中到底有什么作用,最好举个例子。
      

  4.   

    2楼说得没错。
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    这句中的openFileDialog1如果是方法中的局部变量,那就体现不出RestoreDirectory 的作用了。
      

  5.   

    CSDN 的一个网友说:OpenFileDialog在默认情况下,即RestoreDirectory为false的时候,会将当前文件夹更改为你在对话框中选择的文件所在的文件夹。如果设置为true,则会恢复原来的设置。 但是,我使用下面的代码:            OpenFileDialog ofd = new OpenFileDialog();
                Console.WriteLine(Environment.CurrentDirectory);
                //ofd.InitialDirectory = "c:\\";            ofd.RestoreDirectory = false;            if (ofd.ShowDialog() == DialogResult.OK)
                {
                    this.Text = ofd.FileName;
                    Console.WriteLine(Environment.CurrentDirectory);
                }
    输出的路径都是相同的啊,不信你们试,我的是VS2010RtmRel 的。
      

  6.   

    测试过你的代码,选择文件后,输出路径就不同了。
    ofd.RestoreDirectory = true;时,两次输出路径相同。
      

  7.   


    嗯,我VS2008是,使用7楼的代码,当RestoreDirectory设为false 时,输出的路径不同反之相同。
    但在现在的VS2010中输出的路径不管怎样设置都是相同的了。不解啊。
      

  8.   

    UP ...
    但在现在的VS2010中输出的路径不管怎样设置.RestoreDirectory 都是相同的了 Why?
      

  9.   

    顶,借此问一个问题:
                   textBox1.Multiline = true;
                textBox1.ScrollBars = ScrollBars.None;
                textBox1.Text = "ab\ncde\nfg";
              //输出为 abcdefg ,为什么没换行呢?
      

  10.   

               再顶
                textBox1.Multiline = true;
                textBox1.ScrollBars = ScrollBars.None;            textBox1.Text = "where are you\njack ?";
                //使用了\n,为什么没换行呢?
      

  11.   

    WHO CAN TELL ME ...
      

  12.   

         textBox1.Multiline = true;
    textBox1.ScrollBars = ScrollBars.None;
    textBox1.Text = "ab\r\ncde\r\nfg";
    回车换行符号是\r\n
      

  13.   


    嗯,谢谢,不过我在想:
    那textBox1.Text = "ab\rcde\rfg";和
      textBox1.Text = "ab\ncde\nfg";
    在这里为什么不起作用呢?我总感觉回车\r,和换行\n和回车换行\r\n应是一样的效果
      

  14.   

    我用 VS2010 遇到了通样的问题,操作系统为 WIN XP SP3,平台 .NET 4.0
    SaveFileDialog 和 OpenFileDialog 的 RestoreDiretory 属性表征失效。实际调试中发现,RestoreDirectory 属性仍然可以影响 System.Environment.CurrentDirectory 的值,但是该值无法反应到对话框中,亦即是说对话框读取的路径不是 System.Environment.CurrentDirectory 。所以初步判断应该是 .Net 4.0 版本的 FileDialog 基类存在 BUG 。及其可能的原因是 FileDialog 的路径保存机制发生了改变,但 RestoreDirectory 的控制代码没有一同更新。此问题有待进一步研究。
      

  15.   

    ……在网上随便搜了一下,看来这个毛病不是 .net 4.0 特有的,其他人也遇到了同样的问题
    例如:
    http://www.cnblogs.com/xianglong/archive/2011/08/26/RestoreDirectory-CurrentDirectory-SaveFileDialog.html
    以及
    http://topic.csdn.net/u/20080722/00/7AB47ABA-986E-4364-A187-4C201E466BA9.html
      

  16.   

    好吧,真正的结贴在这里:关于FileDialog的路径问题