首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenFileDialog路径问题

OpenFileDialog路径问题
EN

Stack Overflow用户
提问于 2012-07-16 19:46:20
回答 4查看 2.9K关注 0票数 3

我有一个OpenFileDialog,当用户第一次使用应用程序单击“浏览”时,它应该打开一个特定的路径,比如%ProgramData%。对于所有连续的术语,它应该打开上次使用的文件夹。

我试过了:

代码语言:javascript
复制
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.InitialDirectory = "C:\ProgramData";
        ofd.RestoreDirectory = true;
        ofd.FileName = "";
        DialogResult dr = ofd.ShowDialog();

这里的问题是,它每次都会打开"C:\ProgramData“,即使我在查找所需文件时更改了路径。是否有我应该设置的特定属性,或者我是否必须以编程方式跟踪OpenFileDialog的使用情况并相应地设置路径?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-16 20:01:53

试试这个:

单击按钮时,您正在将intialdirectory重置为C:\ProgramData

代码语言:javascript
复制
public partial class Form1 : Form
    {
           OpenFileDialog ofd = new OpenFileDialog();

        public Form1()
        {
            InitializeComponent();
            ofd.InitialDirectory = "C:\\ProgramData";
        }    
        private void button1_Click(object sender, EventArgs e)
        {                     
          DialogResult dr = ofd.ShowDialog();
          ofd.InitialDirectory = null;   
        }    
    }
票数 2
EN

Stack Overflow用户

发布于 2012-07-16 19:57:17

这样做:

代码语言:javascript
复制
// save your current directory  
string currentDirectory = Environment.CurrentDirectory;  

// create an OpenFileDialog and set RestoreCurrentDirectory to false.   
OpenFileDialog ofd = new OpenFileDialog();  
ofd.RestoreCurrentDirectory = false;  
ofd.ShowDialog();  

// save the selected directory locally.   
string selectedDirectory = Environment.CurrentDirectory;  // OpenFileDialog changed this value.   
Environment.CurrentDirectory = currentDirectory; // reset the property with the first value.   

// next time you open an OpenFileDialog, set the InitialDirectory property  
OpenFileDialog ofd2 = new OpenFileDialog();  
ofd.InitialDirectory = selectedDirectory; // set the InitialDirectory to what it was last time an OpenFileDialog was opened.   
ofd.ShowDialog(); 

RestoreDirectory属性确保在OpenFileDialog关闭之前重置Environment.CurrentDirectory中的值。如果RestoreDirectory设置为false,则Environment.CurrentDirectory将设置为OpenFileDialog上次打开到的任何目录。

票数 2
EN

Stack Overflow用户

发布于 2012-07-16 19:55:44

我认为您对RestoreDirectory属性的理解是错误的。实际上,它会在对话框关闭后将目录恢复为默认目录。与你想做的事情正好相反。

另请查看:OpenFileDialog RestoreDirectory as no effect if Multiselect is set to true

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11503600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档