我最近给泰安房管局和地税局开发一个,住房查询的合作系统,系统使用winform开发,在程序中有一个功能就是当查询用户发出一个查询业务,房管用户会像qq一样,有消息提示并且播放提示声音,但是当用户选择上传图片或选择其他路径时,程序就获取不到声音文件。
问题解答:以前一直都是用System.Environment.CurrentDirectory来获取应用程序的当前工作路径,通过当前工作路径来引用其它位于该目录下的很多文件,如图片,音频文件等,
//播放声音
SoundPlayer player = new SoundPlayer();//System.Environment.CurrentDirectory
player.SoundLocation = System.Environment.CurrentDirectory + "\\msg.wav";
player.Load();
player.Play();
label1.Text = "业务编号:"+abc;
if (type == 0)//回复提示
{
if (isth == 0)
{
this.Text = "业务回复提醒";
label2.Text = "您有一个业务已回复:";
}
else
{
this.Text = "业务退回提醒";
label2.Text = "您有一个业务已退回:";
}
}
这段代码在Win7下好好的,但是放到XP就提示不存在了,很是奇怪,但是后来我把System.Environment.CurrentDirectory改成Application.StartupPath就没问题了,真是郁闷透顶了。
解决方法如下:System.Environment.CurrentDirectory的含义是获取或设置当前工作路径,而Application.StartupPath是获取程序启动路径,表面上看二者没什么区别,但实际上区别大得很。
先
说前者:比如说你程序放在桌面上启动,但是中间你用了一个OpenFileDialog打开了E盘名为abc的文件夹下的某一个文件,那么
CurrentDirectory就变成E:\abc了,所以如果你想再获取程序启动文件夹的某一个文件就没用了,但是
Application.StartupPath就不会这样了,无论你中间打开了哪个盘的文件,启动路径都是在桌面那里,一直不会变。
|