这个问题可能只有在特定的程序中会发现:当我们在程序中使用相对路径时是依赖于当前目录的。所以在使用类似代码:

XElement rootNode = XElement.Load(@"zips/"+book.Id+"/"+src);

时程序会加载当前dll文件下的zips文件夹下的对应文件。而如果这个时候如果我们在窗体上使用了OpenFileDialog打开文件后,对应的默认文件夹就会做了相应的改变,使用同样的语句可能就会报错。见如下测试代码:

OpenFileDialog open = new OpenFileDialog();
open.Filter = filter;
a = Directory.GetCurrentDirectory(); //<-- correct
if (open.ShowDialog() == DialogResult.OK) //-- select a file on my desktop
{
a = Directory.GetCurrentDirectory(); //<-- incorrect, is set to my desktop
}

可能这是微软想提高用户体验而坐的一种设置,当用户使用了OpenFileDialog选择了某一个文件时在下次再次打开OpenFileDialog对话框后当前文件夹会默认为上次您选择文件的文件夹。这就是问题所在了。

两种方法解决这个问题:

1:让你的OpenFileDialog不更改目录

openDialog.RestoreDirectory = true

(Gets or sets a value indicating whether the dialog box restores the current directory before closing.)http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.restoredirectory.aspx

2:不使用相对路径而是用完整路径:

System.AppDomain.CurrentDomain.BaseDirectory+…

使用OpenFileDialog会更改默认程序目录的更多相关文章

  1. Eclipse更改默认工作目录的方法

    参考: Eclipse更改默认工作目录的方法:http://blog.163.com/take_make/blog/static/208212210201272611406227/ 用记事本打开&qu ...

  2. Qt Creator 更改默认构建目录到工程目录下

    Qt Creator 更改默认构建目录到工程目录下 步骤 工具->选项->构建和运行->概要->Default build directory->去掉第一个". ...

  3. Qt Creator怎样更改默认构建目录

    用过VS的朋友都知道,用VS编译工程时会将生成的可执行文件放在当前工程目录下,使每个工程独立地成为一个整体,管理起来颇为方便:而Qt Creator则不同,编译程序时会创建一个与当前工程目录同级的构建 ...

  4. Docker 更改默认存储目录 - 十一

    Cemtos 7 Docker 默认目录是 /var/lib/docker docker info 查看 docker 配置信息 更改 docker 默认目录 :  编辑 启动文件: 编辑 /usr/ ...

  5. Linux 更改默认安装路径

    一.rpm -qal |grep mysql 二.除了根据软件包来找文件位置之外,最常用的就是通过find查找某个关键字比如mysql所有包含mysql服务的文件路径 find / -name unr ...

  6. Windows10系统如何更改程序的默认安装目录?

    Windows10系统如何更改程序的默认安装目录? 在Windows10系统的使用中,软件程序的默认安装目录是:C:\Program Files\...或者C:\Program Files(x86)\ ...

  7. CentOS Linux系统下更改Apache默认网站目录

    引言: Apache默认的网站目录是在/var/www/html,我们现在要把网站目录更改到/home/wwwroot/web1/htdocs,操作如下 准备工作: 创建目录: cd /home mk ...

  8. CentOS 更改Apache默认网站目录

    http://www.osyunwei.com/archives/789.html引言:Apache默认的网站目录是在/var/www/html, 现在要把网站目录更改到/home/wwwroot/w ...

  9. Mac 如何将apache的这个默认目录更改到用户目录下

    如何将apache的这个默认目录更改到用户目录下. 做如下更改即可: 1.在自己的用户目录下新建一个Sites文件夹,我的用户目录为gaocuili 2.进到cd /etc/apache2/users ...

随机推荐

  1. bzoj1741 [Usaco2005 nov]Asteroids 穿越小行星群

    网络流,对于每一个行星,将行星所在行到行星连一条流量为1的边,将行星到其所在列连一条流量为1的边,从源点到所有行连一条流量为1的边,将所有列到汇点都连一条流量为1的边,最大流即为答案. 代码 #inc ...

  2. 夺命雷公狗-----React---11--添加css样式的方法

    <!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...

  3. js处理异常try{}catch(e){}

    MXS&Vincene  ─╄OvЁ  &0000021─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  4. css3实现轮播

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 关于NSLog

    #ifdef __OBJC__#ifdef DEBUG#define NSLog(fmt,...) NSlog((@"%s [Line %d]" fmt),__PRETTY_FUN ...

  6. Python对整形数字进行加密和解密

    # -*- coding:utf-8 -*- __author__ = 'Ray' class Encryption: """整形数字简单的一个加密/解密算法" ...

  7. ASP.NET多个Button的页面,回车执行按钮事件(转)

    主要有两种实现方法分别是:JavaScript的方法与Panel的方法 一.JavaScript的方法 ①单输入框(文本框)单按钮的实现方法 以下功能实现:在输入框中输入内容之后,按回车键就执行按钮事 ...

  8. centos minimal 开启无线网卡 & 查看IP

    minimal版本默认不启动网络,所以要自己配置. 配置过程很简单,编辑配置文件 vi /etc/sysconfig/network-script/ifcfg-eth0 需要更改两项 NM_CONTR ...

  9. log4j2的使用

    预备知识 日志级别:log4j默认六个级别,即trace.debug.info.warn.error.fatal ,对应意味着该消息为追踪.调试.普通信息.警告.错误.严重错误.可以根据需要子定义其他 ...

  10. Linux命令行与命令

    Linux命令行与命令   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的命令是很重要的工具,也往往是初学者最大的瓶 ...