C# Environment.SpecialFolder.MyDocuments可以工作,但SpecialFolder.MyComputer不能';不行?
我正在使用VS2013 Express for Desktop和Windows窗体 我跟在后面。所以我试图让treeview从“MyComputer”级别开始,这样所有的驱动器号都可以供用户选择 它适用于MyDocuments,如下所示:C# Environment.SpecialFolder.MyDocuments可以工作,但SpecialFolder.MyComputer不能';不行?,c#,windows,winforms,visual-studio,special-folders,C#,Windows,Winforms,Visual Studio,Special Folders,我正在使用VS2013 Express for Desktop和Windows窗体 我跟在后面。所以我试图让treeview从“MyComputer”级别开始,这样所有的驱动器号都可以供用户选择 它适用于MyDocuments,如下所示: DirectoryInfo info = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); 但当我从自动完成中选择MyComputer时,
DirectoryInfo info = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
但当我从自动完成中选择MyComputer时,它不起作用:
DirectoryInfo info = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyComputer));
我得到:
mscorlib.dll中发生类型为“System.ArgumentException”的未处理异常
其他信息:路径不是合法形式
这是令人惊讶的,因为“MyComputer”在autocomplete中可用,但不像其他特殊文件夹那样工作
多谢各位
更新:
谢谢你,拜特伯斯特和科迪格雷
在这里问我应该做什么合适吗?指出:
MyComputer常量始终生成空字符串(“”),因为没有
为“我的电脑”文件夹定义了路径
向DirectoryInfo
构造函数提供空字符串是导致ArgumentException
异常的原因
您可以找到关于返回空字符串的原因的解释:
如果操作系统未创建文件夹,现有文件夹已被删除,或者该文件夹是虚拟目录(如“我的电脑”)而与物理路径不对应,则该文件夹在物理上不存在
这将是学习如何使用调试器的好时机。创建一个额外变量,并将Environment.GetFolderPath(Environment.SpecialFolder.MyComputer)的结果放入其中。然后用调试器检查你得到的结果。@gus:我面临着同样的问题。你找到解决方案或替代方案了吗?面对同样的问题。请问有什么解决方案或替代方案?