我支持在 .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);
}
这几乎可以工作;但是,我遇到了一个奇怪的问题,即SelectedPath
(根据定义 的内容textBoxTo
)是当前用户主目录中的路径,它不会自动浏览到该路径,而只是显示“我的电脑”节点扩展为一个等级。对于任何其他路径来说都很好。
我敢肯定,您的第一个猜测是权限问题,就像我的直觉一样。似乎不是,对于标准帐户和管理员帐户,此问题以管理员身份正常运行。这是一个全新的安装,当然,没有奇怪的权限或任何东西。
当我们所有的默认值都在当前用户的目录中时,这非常烦人!
注意:这只发生在应用程序中;据我所见,它无法通过小型测试应用程序重现。
关于可能导致这种情况的任何想法?
更新: Screenies:
这是我想要的行为(从一个小测试应用程序获得)
这是我使用默认属性得到的
这是通过将根设置为我的电脑得到的
注意:最后一张图像的SelectedPath
设置与预期的图像...