在工作中碰到了一个问题就是使用.Net2.0版本时发现系统自带的OpenFileDialog的Filter过滤器设置完成后,对于快捷方式无法过滤掉会被识别读取。
例如:管理办法 A1.pdf - 快捷方式.lnk
using (OpenFileDialog openFileDlg = new OpenFileDialog()){ openFileDlg.Filter = “shp|*.shp”; if (openFileDlg.ShowDialog()!= DialogResult.OK) { return false; } dstPath = openFileDlg.FileName;}
执行上述代码在对话框中将会出现 管理办法 A1.pdf - 快捷方式.lnk 该快捷方式,并且可以作为文件被识别执行后续的过程,在
openFileDlg.FileName
的返回值却是 管理办法 A1.pdf,如果没有做二次判断,且在解析shp文件后缀名判断或异常处理将会引起宕机。
没有很好的处理方法。
可以尝试
1、进行文件的二次判断
openFileDlg.FileName
判断文件名的后缀名是否为我们需要的文件
2、设置文件获取后的文件名保持原有的快捷方式链接,通过判断后缀名*.lnk做二次判断
OpenFileDial.DereferenceLinks = false;
这种方法将会排除shp文件的快捷方式,因为没有好的办法只能这样
附:
对于其他对话框也将会出现同样的问题,处理方式自己想办法。如果有解决办法欢迎回帖,谢绝更换开发库