首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇异的FolderBrowserDialog行为

奇异的FolderBrowserDialog行为
EN

Stack Overflow用户
提问于 2012-04-02 08:27:30
回答 3查看 3.3K关注 0票数 8

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

基本上,会出现对话框,但只显示根桌面节点,甚至无法展开它来显示其他任何内容。显然,这是不可能使用的。

经过大量的尝试和错误之后,我最终成功地获得了一些有用的东西,方法是在设置的其余部分的RootFolder属性之前设置属性:

代码语言:javascript
复制
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的内容)是当前用户主目录中的路径,它不会自动浏览到该路径,而只是显示我的计算机节点扩展到一个级别。对于任何其他的道路来说都是非常好的。

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

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

注意:据我所见,只在应用程序中才会发生这种情况;就我所见,小型测试应用程序是不可复制的。

有什么可能导致这一切的想法吗?

更新:屏幕:

这就是我想要的行为(从一个小测试应用程序中获得)

这就是我使用默认属性得到的结果。

这就是我通过将根目录设置到我的计算机而得到的结果。注意:最后一幅图像与预期的图像具有相同的SelectedPath集.

EN

回答 3

Stack Overflow用户

发布于 2012-11-29 13:01:24

我也有过类似的问题。在Windows和Windows 7中,有以下代码:

代码语言:javascript
复制
browsePath.RootFolder = Environment.SpecialFolder.MyComputer;

返回桌面。如果您在Windows Explorer中查看,树的根是桌面,而不是我的计算机,就像Windows XP中的那样。要解决这个问题,请使用以下方法:

代码语言:javascript
复制
browsePath.RootFolder = @"C:\";

每台Windows计算机都有一个C:\驱动器,因此这将解决您的问题。

希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2012-04-03 08:01:38

如果您只访问用户专用文件夹,请使用

代码语言:javascript
复制
browsePath.RootFolder = Environment.SpecialFolder.Personal

只有指定的文件夹和下面的任何子文件夹才会出现在对话框中,并且是可选择的。SelectedPath属性和RootFolder确定对话框显示时所选文件夹是什么,只要SelectedPath是RootFolder的子文件夹(或者更准确地说,指向由RootFolder表示的shell名称空间的子文件夹)。

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

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

票数 0
EN

Stack Overflow用户

发布于 2012-04-21 20:45:10

VB.NET代码

代码语言:javascript
复制
Dim fdb As New FolderBrowserDialog
    With fdb
        '.RootFolder = Environment.SpecialFolder.MyComputer
        'this folder don't exists in vista, the my computer folder was renamed to computer (in spanish "mi pc" to "equipo")
        'try with another initial folder
        .RootFolder = Environment.SpecialFolder.Desktop
        'You can set the desktop as home directory because users typically already have shortcuts or the left side menu to navigate
        Dim dr As DialogResult = .ShowDialog
        If _
            dr = DialogResult.OK Or _
            dr = DialogResult.Yes Then _
            If IO.Directory.Exists(.SelectedPath) = True Then _
            Me.textBoxTo.Text = UpdateLocation(.SelectedPath)
    End With

基本上,尝试另一个目录并确保所选目录的存在。如果你仍然有问题,可能是由于系统的一些错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9973083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档