FolderBrowserDialog 设置根目录为桌面 RootFolder = Environment.SpecialFolder.Desktop 未生效
时间: 2024-03-13 20:44:21 浏览: 23
如果您使用了 `FolderBrowserDialog` 的 `RootFolder` 属性将根目录设置为桌面,但是未能生效,这可能是因为您已经设置了 `SelectedPath` 属性。在这种情况下,`FolderBrowserDialog` 会使用 `SelectedPath` 属性作为根目录,而不是 `RootFolder` 属性。
要解决这个问题,您可以将 `SelectedPath` 属性设置为 `string.Empty`,或者将其设置为您想要的默认文件夹的路径。
例如,以下代码将 `FolderBrowserDialog` 的根目录设置为桌面:
```csharp
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.RootFolder = Environment.SpecialFolder.Desktop;
dialog.SelectedPath = string.Empty;
```
这将确保 `FolderBrowserDialog` 使用 `RootFolder` 属性作为根目录,而不是 `SelectedPath` 属性。
相关问题
FolderBrowserDialog 设置根目录为桌面 RootFolder = Environment.SpecialFolder.Desktop; SelectedPath = string.Empty 未生效
如果 `FolderBrowserDialog` 的 `RootFolder` 属性设置为 `Environment.SpecialFolder.Desktop`,并且 `SelectedPath` 属性设置为 `string.Empty`,但是未能生效,可能是因为您的应用程序没有足够的权限来访问桌面文件夹。
您可以尝试使用管理员权限来启动您的应用程序,或者将您的应用程序移动到一个不受限制的文件夹中,例如 `C:\Users\Public`。
如果这些方法都无法解决问题,您可以尝试使用 Windows API 来打开文件夹对话框,例如 `SHBrowseForFolder` 函数。这样可以确保您的应用程序可以访问桌面文件夹。以下是一个使用 `SHBrowseForFolder` 函数的示例:
```csharp
using System.Runtime.InteropServices;
public static class FolderBrowserDialogEx
{
[DllImport("shell32.dll")]
private static extern IntPtr SHBrowseForFolder(ref BROWSEINFO lpbi);
[DllImport("shell32.dll", CharSet = CharSet.Unicode)]
private static extern bool SHGetPathFromIDList(IntPtr pidl, IntPtr pszPath);
[StructLayout(LayoutKind.Sequential)]
private struct BROWSEINFO
{
public IntPtr hwndOwner;
public IntPtr pidlRoot;
public IntPtr pszDisplayName;
public string lpszTitle;
public uint ulFlags;
public IntPtr lpfn;
public IntPtr lParam;
public int iImage;
}
public static string ShowDialog()
{
BROWSEINFO bi = new BROWSEINFO();
bi.hwndOwner = IntPtr.Zero;
bi.pidlRoot = IntPtr.Zero;
bi.lpszTitle = "请选择文件夹";
bi.ulFlags = 0x00000040; // BIF_USENEWUI
IntPtr pidl = SHBrowseForFolder(ref bi);
if (pidl != IntPtr.Zero)
{
StringBuilder path = new StringBuilder(260);
if (SHGetPathFromIDList(pidl, path))
{
return path.ToString();
}
}
return string.Empty;
}
}
```
您可以使用以下代码调用 `FolderBrowserDialogEx.ShowDialog` 方法来显示文件夹对话框:
```csharp
string selectedPath = FolderBrowserDialogEx.ShowDialog();
```
这将显示一个文件夹对话框,允许用户选择文件夹,并返回所选文件夹的路径。
wpf 将FolderBrowserDialog的启动页面设置为桌面
您可以使用以下代码将FolderBrowserDialog的启动页面设置为桌面:
```csharp
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.RootFolder = Environment.SpecialFolder.Desktop;
```
这将把FolderBrowserDialog的根目录设置为桌面,使其在打开时直接显示桌面文件夹。