奇怪的FolderBrowserDialog行为

Ale*_*r R 8 .net c# folderbrowserdialog windows-vista winforms

我支持在.NET 3.5上运行的旧版C#应用程序.我们FolderBrowserDialog在Windows Vista(32位或64位)上发现了一个问题.

基本上发生的事情是对话框会出现,但只会显示根桌面节点,甚至无法展开它以显示其他任何内容.显然,这是不可能的.

经过大量的反复试验后,我最终设法通过在设置的其余部分之前设置RootFolder属性来获得可用的东西:

FolderBrowserDialog browsePath = new FolderBrowserDialog();
browsePath.RootFolder = Environment.SpecialFolder.MyComputer;
browsePath.SelectedPath = this.textBoxTo.Text;
browsePath.Description = TextResources.OutputTargetCaption;
browsePath.ShowNewFolderButton = true;

if(browsePath.ShowDialog(this) == DialogResult.OK)
{
    this.textBoxTo.Text = UpdateLocation(browsePath.SelectedPath);
}
Run Code Online (Sandbox Code Playgroud)

几乎有效; 然而,我有一个奇怪的问题,然后SelectedPath(根据定义的内容textBoxTo)是当前用户的主目录中的路径,它不会自动浏览到该路径,而只是显示我的计算机节点扩展为一个水平.它对任何其他路径都完美无缺.

我确信你的第一个猜测是权限问题,就像我的直觉一样.它似乎不是,这个问题是正常运行的,并且作为管理员,对于标准帐户和管理员帐户都是如此.这是一个干净的安装,当然,没有奇怪的权限或任何东西.

当我们所有默认值都在当前用户的目录中时,这非常烦人!

注意:只是在应用程序中发生的; 就我所见,它不能用小型测试应用程序重现.

关于可能导致这种情况的任何想法?

更新:Screenies:
这是我想要的行为(从一个小测试应用程序获得)
这是我得到的默认属性
这是我通过将根设置为我的电脑得到的 注意:最后一个图像具有相同的SelectedPath设置预期图像......

jor*_*are 0

如果您仅访问用户的私人文件夹,请使用

browsePath.RootFolder = Environment.SpecialFolder.Personal
Run Code Online (Sandbox Code Playgroud)

只有指定的文件夹及其下的任何子文件夹才会出现在对话框中并且可供选择。SelectedPath 属性与 RootFolder 一起确定显示对话框时选定的文件夹,只要 SelectedPath 是 RootFolder 子文件夹的绝对路径(或更准确地说,指向所表示的 shell 命名空间的子文件夹)通过根文件夹)。

简而言之,除非 RootFolder 已经位于当前用户的私人文件夹中,否则您不能输入某人的私人文件夹作为启动 selectedPath。

有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.rootfolder.aspx