public static String GetFolderName() { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.SelectedPath = Application.StartupPath; if (dialog.ShowDialog() == DialogResult.OK) return dialog.SelectedPath; else return null; }有几个参数重载
时间: 2024-02-10 07:20:05 浏览: 27
在这个代码段中,GetFolderName方法只有一个重载,即不带参数的重载。它返回一个字符串,表示用户选择的文件夹路径。在方法中,使用FolderBrowserDialog类创建一个文件夹浏览对话框,并将对话框的SelectedPath属性设置为应用程序启动路径。然后,使用ShowDialog方法显示对话框,并在用户选择文件夹后返回所选文件夹的路径。如果用户取消了文件夹选择,返回null。
因此,该方法只有一个重载版本,即没有参数的版本。
相关问题
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();
```
这将显示一个文件夹对话框,允许用户选择文件夹,并返回所选文件夹的路径。
FolderBrowserDialog 设置根目录为桌面 RootFolder = Environment.SpecialFolder.Desktop 未生效
如果您使用了 `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` 属性。