C# 如何在C中创建这种类型的“选择文件夹”对话框?

C# 如何在C中创建这种类型的“选择文件夹”对话框?,c#,.net,visual-studio-2013,C#,.net,Visual Studio 2013,因此,我最近尝试使用该屏幕,但令我失望的是,它与以下屏幕截图不同: 但事实上,它是格式化的,正如我所想,很难像这样导航: 我该如何获得另一个版本,它是一个对话框,要求保存什么文件夹,而不是我认为很难导航的菜单。这是因为您使用的是FolderBrowserDialog而不是OpenFileDialog 您可以查看下面的 private void btnBrowse_Click(object sender, EventArgs e) { OpenFileD

因此,我最近尝试使用该屏幕,但令我失望的是,它与以下屏幕截图不同:

但事实上,它是格式化的,正如我所想,很难像这样导航:


我该如何获得另一个版本,它是一个对话框,要求保存什么文件夹,而不是我认为很难导航的菜单。这是因为您使用的是FolderBrowserDialog而不是OpenFileDialog

您可以查看下面的

 private void btnBrowse_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();
            fileDialog.Title = "Browse File";
            fileDialog.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
            fileDialog.FilterIndex = 2;
            fileDialog.InitialDirectory = "c:\\";
            fileDialog.RestoreDirectory = true;

            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                txtFileName.Text = fileDialog.FileName;
            }
        }
NuGet软件包Microsoft.WindowsAPICodePack-Shell中的CommonOpenFileDialog类将响应您的请求

将IsFolderPicker属性设置为true,就是这样

using Microsoft.WindowsAPICodePack.Dialogs;     

private bool SelectFolder(out string fileName)
{
    CommonOpenFileDialog dialog = new CommonOpenFileDialog();
    dialog.IsFolderPicker = true;
    if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
    {
        fileName = dialog.FileName;
        return true;
    }
    else
    {
        fileName = "";
        return false;
    }
}

您使用的是winforms还是wpf?AFAIK FolderBrowser对话框过去只类似于第二个屏幕截图。如果你想要不同的东西,你必须自己动手。老实说,我不知道我在用什么。我对这个很陌生,这可能是我第三次或第四次用C编程。。。。事实上,这是我第一次使用invoke。请显示一些代码,因为您不应该使用invoke来获取OpenXXDialogC@BerndLindeOP不使用Invoke,所需的文件夹实际上是Vista样式的文件对话框,该对话框在.NET中不可用。事实上,使用本机调用是解决此问题的方法之一。这似乎是选择了一个文件,通过复制粘贴代码的其余部分,它似乎是从.txt文件中重新使用的,但对所有文件都进行了更改**您可以从中选择文件夹名称的子字符串。没有为文件夹选择提供所需的界面检查此链接。TXTFILNAME显示这可能是从代码中选择txt文件类型。我仍在进行研究,我可能会在windows中找到另一种方法来解决这个问题,因为我不想添加外部包。实际上TXTFILNAME是一个文本框控件,我只是在它们前面加上txt:。如果你找到了一种方法来完成你所需要的,请把它作为一个答案贴在这里。就像原始问题中的选择文件类型一样,但是无论如何,谢谢你的回答,这肯定会帮助其他人。这需要一个NuGet包,并将一个things包含到项目中,而不是本地方法。