如何在 FolderBrowserDialog 中设置只读属性

Posted

技术标签:

【中文标题】如何在 FolderBrowserDialog 中设置只读属性【英文标题】:How to set read only properties in FolderBrowserDialog 【发布时间】:2020-09-05 09:54:45 【问题描述】:

我在我的应用程序中使用自定义 WPF FolderBrowserDialog 将数据导出到特定文件夹位置。它具有只读属性 SelectedPathRootPath 以及其他可用的属性和依赖项属性。

现在我想在 RootFolderSelectedPath 中分配我自己的路径。由于它是只读属性,因此我无法在其中分配任何路径。它还具有与 FolderBrowserDialog.RootFolderProperty.SetVale(dependencyproperty,object); 相同属性的依赖属性。是否可以使用 C# 而不是 xaml 在依赖项属性中分配值?

如何设置默认路径以始终使用特定选定文件夹打开(D:\Export)FolderBrowserDialog,并且我还想实现逻辑以记住最后选择的文件夹。请帮我解决这个问题。

【问题讨论】:

您是否尝试在打开之前致电SetCurrentDirectory? docs.microsoft.com/en-us/dotnet/api/… 你应该可以修改SelectedPath @Moo-Juice - 该 FolderBrowserDialog 类中没有这样的属性。 @Suryakavitha - var dlg = new System.Windows.Forms.FolderBrowserDialog() SelectedPath = @"D:\Export" ; 不适合你吗?它已经为我工作了很多年。 Btw FolderBrowserDialog 不是 WPF 的一部分,您确定不想标记 WinForms 吗? 【参考方案1】:

我也有一个 WPF 应用程序并使用

System.Windows.Forms.FolderBrowserDialog

类。它确实具有可编辑的SelectedPathRootFolder

如果你有一个完整的路径并将SelectedPath 设置为它,那么从突出显示的角度来看,这就是对话框默认的位置。对话框将从屏幕顶部开始,而不是在特定的缩进级别。但是如果你向下滚动,你会看到给定的路径突出显示。当您进入每个级别时,您会看到每个后续级别都预先突出显示,直到最后一个级别。

如果从 FolderBrowserDialog 的变量中,执行 (F12) 或右键单击“转到定义”,它将带您到该声明。您应该将这两个属性都视为

public get; set;

现在对于RootFolder,您也可以更改它,但这是基于您将在声明中看到的Environment.SpecialFolder 中有效值的ENUM 属性。现在,(F12) 或在RootFolder 上右键单击“转到定义”,它将带您进入环境特殊文件夹的枚举列表。

现在,如果您想劫持其中一个不常用的文件夹并将其分配到其他位置,那将是您采取的新步骤。

【讨论】:

以上是关于如何在 FolderBrowserDialog 中设置只读属性的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 WPF Net 6 应用程序中使用 FolderBrowserDialog?

使用 OpenFileDialog 作为目录,而不是 FolderBrowserDialog

使用 FolderBrowserDialog 时出现异常

folderbrowserdialog1 在 Visual Studio 2015 Enterprise Windows 10 中不起作用

使用 FolderBrowserDialog 限制对某些文件夹的访问

C# 对话框之FolderBrowserDialog