天道酬勤,学无止境

打开文件对话框多选(Openfiledialog Multiselect)

问题

我正在使用多选文件对话框来浏览多张图片并将它们添加到 datagridview 然后从那里将它们存储在数据库中。

就我只设法存储第一张选定的图片而言,出了点问题(根本没有语法或运行时错误)。

经过检查,我意识到文件对话框仅获取第一个图像的完整路径并将其用于其余图像。

示例代码:

if (ofd_pic.ShowDialog() == DialogResult.OK)
{
   foreach (String file in ofd_pic.FileNames)
   {
    MessageBox.Show(ofd_pic.FileName);
   }
}

该消息框将始终仅显示第一张图像的路径,我无法获取每个选定图像的路径。

文件对话框的属性是:

1.修饰符:私人。 2. 多选:真。 3. 恢复目录:真。

有什么帮助吗?

回答1

您实际上是在遍历所有文件,但您从不使用它。 您需要使用循环变量file

foreach (String file in ofd_pic.FileNames)
{
    MessageBox.Show(file);
}

只有在将MultiSelect设置为false时才应使用ofd_pic.FileName属性,这样才有意义。 我猜FileName在您启用MultiSelect时返回第一个文件。

回答2

您使用了错误的参数。

if (ofd_pic.ShowDialog() == DialogResult.OK)
{
foreach (String file in ofd_pic.FileNames)
 {
 MessageBox.Show(file);
 }
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 限制 OpenFileDialog 的多选(Limit OpenFileDialog's Multiselect)
    问题 我有一个OpenFileDialog并且它的MultiSelect属性是ON 。 我的问题是如何限制要选择的项目数量,例如只有 5 个项目? 谢谢 回答1 您可以使用 FileOk 事件来检查用户单击“确定”按钮时选择的文件。 如果您不满意,则显示一条消息并将 CancelEventArgs.Cancel 属性设置为 True 以防止对话框关闭。 像这样: Dim dlg As New OpenFileDialog() dlg.Multiselect = True AddHandler dlg.FileOk, Sub(s, ce) If dlg.FileNames.Length > 5 Then MessageBox.Show("Please select no more than 5 files") ce.Cancel = True End If End Sub If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then '' etc... End If 回答2 你不能。 但是你有其他选择: 1.-一个不错的选择是将所有文件名放在一个文本文件中,然后接受该文本文件作为程序的输入。 2.-您应该允许用户选择目录。 然后你列出所有文件,让他们选择尽可能多的文件,不会有任何问题。 3
  • 如何从OpenFileDialog和FolderBrowserDialog获取文件路径?(How to get file path from OpenFileDialog and FolderBrowserDialog?)
    问题 嘿,几天前我开始学习C#,我正在尝试制作一个程序,将文件复制和粘贴(并在需要时替换)到选定目录,但是我不知道如何从目录中获取目录和文件路径。打开文件对话框和文件夹浏览器对话框 我究竟做错了什么? 这是代码: namespace filereplacer { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void direc_Click(object sender, EventArgs e) { string folderPath = ""; FolderBrowserDialog directchoosedlg = new FolderBrowserDialog(); if (directchoosedlg.ShowDialog() == DialogResult.OK) { folderPath = directchoosedlg.SelectedPath; } } private void choof_Click(object sender, EventArgs e) { OpenFileDialog choofdlog = new OpenFileDialog(); choofdlog.Filter = "All Files (*.*)|*.*"
  • 如果 Multiselect 设置为 true,则 OpenFileDialog RestoreDirectory 无效(OpenFileDialog RestoreDirectory as no effect if Multiselect is set to true)
    问题 我们在整个应用程序中使用OpenFileDialog来选择文件。 到目前为止,我们从未使用过Multiselect 。 我们将RestoreDirectory设置为true,这样每当我们打开对话框时,我们都会将用户带到上次使用的目录。 如果我将Multiselect设置为 true,则不会记住从中选择文件的目录。 该对话框显示了Multiselect设置为 false 时使用的最后一个目录。 顺便说一下,我们创建了一个OpenFileDialog的新实例。 环境: 视窗 XP VS 2008 目标框架 3.5 C# 回答1 这不是RestoreDirectory 的设计目的。 它确保在对话框关闭时恢复程序的默认目录,即使用户导航到另一个目录。 对话框首先选择的目录是由 Windows 编写的注册表项选择的。 确切的规则是模糊的,并且对于不同版本的 Windows 也不相同。 如果您希望对话框在特定目录中打开,请确保设置 InitialDirectory 属性。 回答2 如果您转到设计器视图,您会发现它“在添加 OpenFileDialog 对象时,visual studio 本身已向其添加了 initialDirectory 属性。继续删除该链接
  • Windows批处理脚本中的文件/文件夹选择器对话框(File / folder chooser dialog from a Windows batch script)
    问题 通常,要求用户为批处理脚本提供文件名是一件麻烦事,不需要拼写错误,带有空格的路径引号等。 不幸的是,用户并不以准确性着称。 在直到运行时才知道输入文件位置的情况下,使用GUI进行文件选择输入可减少用户出错的可能性。 有没有一种方法可以从Windows批处理脚本调用File... Open样式gui文件选择器或文件夹选择器? 如果脚本用户安装了PowerShell或.NET,则可以。 请参阅下面的答案。 我也很想知道其他任何人都可以提供的其他解决方案。 回答1 文件浏览器 更新2016.3.20: 由于PowerShell是当今几乎所有现代Windows安装的本地组件,因此我宣布不再需要C#后备。 如果您仍然需要它来与Vista或XP兼容,我将其移至新的答案。 从此编辑开始,我将脚本重写为“批处理+ PowerShell”混合,并合并了执行多选功能。 它非常易于阅读和根据需要进行调整。 <# : chooser.bat :: launches a File... Open sort of file chooser and outputs choice(s) to the console :: https://stackoverflow.com/a/15885133/1683264 @echo off setlocal for /f "delims=" %%I in (
  • 在 Windows 应用程序中使用 FolderBrowserDialog 浏览多个文件夹(Browse Multiple folders using FolderBrowserDialog in windows application)
    问题 如何使用 FolderBrowserDialog 选择多个文件夹? 目前我只能使用下面的代码浏览一个文件夹。 FolderBrowserDialog dialog; private void btnbrowse_Click(object sender, EventArgs e) { dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() == DialogResult.OK) { txtFolderPath.Text = dialog.SelectedPath; } } 如何浏览多个文件夹? 回答1 FolderBrowserDialog没有对多文件夹选择的本机支持,但您可以结合树视图和“多选”来构建自己的对话框。 看一看: http://www.codeproject.com/Articles/13375/File-Explorer-using-Treeview-controller-in-C-2-0 http://www.arstdesign.com/articles/treeviewms.html 回答2 但是您可以使用 System.Windows.Forms.OpenFileDialog() 来实现它。它允许您选择多个文件夹 请看以下示例: using System; using System
  • C#对打开文件对话框中选定文件的数量有限制(C# is there a limit to number of selected files in Open File Dialog)
    问题 我有一个 C# windows 窗体应用程序,我在其中从 Open File 浏览器将 XML 文件和 CGM 图形文件加载到我的应用程序中。 我似乎可以一次选择几百个,并且它可以正常工作,但是会弹出一个对话框,告诉我它找不到这样的文件,但只提供了一半的文件名。 我假设这是由于一次通过打开文件对话框可以选择/处理的文件数量限制。 有谁知道那个数字是多少,如果我一次选择超过这个限制,有没有办法解决这个问题? 我有效地将文件“导入”到我的应用程序中,从而使用 foreach 循环将选定的文件移动到另一个文件夹,并且应用程序写入一个 XML 文件,其中包含导入的文件的所有文件名(以及其他数据)在文件上)。 以下是整个“导入”方法 private void addFilesToCSDBToolStripMenuItem_Click(object sender, EventArgs e) { int DMsimported = 0; int graphicsImported = 0; if (projectName == "") { MessageBox.Show("Please open a project first", "DAWS"); return; } DialogResult result = openFileDialog1.ShowDialog(); if (result
  • 尝试使用 C# 中的新 IFileDialog 和 IFileOpenDialog 接口以最少的代码打开文件对话框 [重复](Trying to open a file dialog using the new IFileDialog and IFileOpenDialog interfaces in C# with minimal code [duplicate])
    问题 这个问题在这里已经有了答案: 在 C# 中定义 Windows API 接口时,是否必须定义所有成员? 我可以只定义我将要使用的方法吗? (2 个回答) 4年前关闭。 我正在尝试使用 C#、Visual Studio 2010 中的 IFileOpenDialog 接口显示可以选择文件夹的标准打开文件对话框。 我正在尝试使用最少的代码,所以我只在接口中定义了我需要的方法: using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // Disable warning CS0108: 'x' hides inherited member 'y'. Use the new keyword if hiding was intended. \#pragma warning disable 0108 namespace FolderDialog { internal static class IIDGuid { internal const string IModalWindow = "b4db1657-70d7-485e-8e3e-6fcb5a5c1802"; internal const string IFileDialog = "42f85136-db7e
  • 如何配置OpenFileDialog选择文件夹?(How do you configure an OpenFileDialog to select folders?)
    问题 在VS .NET中,当您为项目选择文件夹时,将显示一个对话框,看起来像一个OpenFileDialog或SaveFileDialog,但是将其设置为仅接受文件夹。 自从我看到这一点以来,我一直想知道它是如何完成的。 我知道FolderBrowserDialog,但我从未真正喜欢过该对话框。 它开始时太小,不能让我利用能够输入路径的优势。 我几乎可以肯定的是,目前尚无从.NET执行此操作的方法,但我也很好奇您也如何从非托管代码中执行此操作。 缺少从头开始完全重新实现对话框的方法,如何修改对话框以具有此行为? 我还想重申一下,我知道FolderBrowserDialog,但有时我不喜欢使用它,除了真正好奇如何以这种方式配置对话框。 告诉我只使用FolderBrowserDialog可以帮助我保持一致的UI体验,但不能满足我的好奇心,因此它不会被视为答案。 这也不是Vista特有的东西;它也不是Vista特有的东西。 自VS .NET 2003以来,我一直在看到此对话框,因此它在Win2k和WinXP中是可行的。 这不是一个“我想知道执行此操作的正确方法”的问题,而更多的是“自从我第一次在VS 2003中开始做以来,我对此一直感到好奇”。 我知道Vista的文件对话框可以执行此操作,但是它在XP中一直在运行,因此我知道他们做了一些努力使其能够正常工作。 Vista特定的答案不是答案
  • OpenFileDialog 只读取第一个文件(OpenFileDialog reads only the first file)
    问题 我正在使用以下代码打开多个 XML 文件并读取文件的内容,但它不起作用。 OpenFD.Filter = "XML Files (*.xml)|*.xml"; OpenFD.Multiselect = true; if (OpenFD.ShowDialog() == DialogResult.OK) { foreach (string file in OpenFD.FileNames) { MessageBox.Show(file); System.IO.Stream fileStream = OpenFD.OpenFile(); System.IO.StreamReader streamReader = new System.IO.StreamReader(fileStream); using (streamReader) { MessageBox.Show(streamReader.ReadToEnd()); } fileStream.Close(); } } 出于测试目的,我创建了两个 xml 文件。 file1.xml(其内容为“string1”) file2.xml(其内容为“string2”) 当我打开对话框并选择两个文件时,我收到四条消息。 文件1.xml 字符串 1 文件2.xml 字符串 1 即使 OpenFileDialog 正确读取文件名
  • 如何在openFileDialog中保存最后一个文件夹?(How to save last folder in openFileDialog?)
    问题 如何让我的应用程序存储在openFileDialog打开的最后一个路径,并在新打开后恢复它? OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { acc_path = openFileDialog1.FileName; Settings.Default.acc_path = acc_path; foreach (string s in File.ReadAllLines(openFileDialog1.FileName)) { accs.Enqueue(s); } label2.Text = accs.Count.ToString(); } 回答1 这是最简单的方法:FileDialog.RestoreDirectory。 回答2 更改设置后,您必须调用 Settings.Default.Save(); 在你打开你设置的 OpenFileDialog 之前 openFileDialog1.InitialDirectory = Settings.Default.acc
  • 如何将表单添加到控制台应用程序以便用户可以选择文件?(How do I add a form to a console app so that user can select file?)
    问题 我创建了一个控制台应用程序并让它按照我想要的方式工作。 使用VS2010中的“添加项目”>“添加Windows窗体”选项,它已经自动创建了我需要的东西。 我添加了一个按钮和代码来检索 Excel 文件(如下)我的问题是: 我如何获取他们创建的文件并在我的 program.cs “Main”区域中使用它? OpenFileDialog 按钮单击事件的代码,来自 Form1.cs: private void btnSelect_Click(object sender, EventArgs e) { OFD.openFileDialog OFD = new OpenFileDialog(); OFD.Multiselect = false; OFD.Title = "Open Excel Document"; OFD.Filter = "Excel Document|*.xlsx;*.xls"; OFD.ShowDialog(); string docPath = OFD.FileName; } 我希望从 program.cs 文件制作“docPath”的那部分静态主要事件 static void Main(string[] args) { var excel = new ExcelQueryFactory(); excel.FileName = @"C:\Users
  • OpenFileDialog - 只显示没有扩展名的文件名(OpenFileDialog - only display filenames that have no extensions)
    问题 我的 C# 程序中有以下代码: OpenFileDialog fDialog = new OpenFileDialog(); fDialog.Title = "Open a file"; fDialog.Filter = "NCF files (*.ncf)|*.ncf|All files (*.*)|*.*|No Extensions (*.)|*."; 我希望能够让用户从以下选项中进行选择: *.NCF (仅限带有 .NCF 扩展名的文件) **.* (所有文件) 和没有扩展名的文件,例如: 没有扩展名的文件我知道 ***.* 会执行此操作,但它还会显示同一目录中的 .NCF、.TXT 和所有其他文件。 我只想能够显示没有扩展名的文件名。 用 * 过滤。 不做的伎俩。 使用 DOS 窗口 ( dir *. ) 执行此操作时效果很好,但 C# 似乎忽略了 *. 筛选。 有没有办法用 C# 做到这一点? 谢谢。 回答1 如果其他软件程序在同一位置创建这些文件,为什么不让您的代码为该文件夹中的每个无扩展名的文件添加一个扩展名(像“.XXX”这样的无害的东西),然后显示对话框? 编辑:或者,请参阅此 MSDN 文章: http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx 从过滤器部分: CDN
  • 打开目录对话框(Open directory dialog)
    问题 我希望用户选择一个目录,将在该目录中保存随后将生成的文件。 我知道在WPF中我应该使用Win32中的OpenFileDialog ,但是不幸的是,该对话框要求选择文件-如果我仅单击“确定”而不选择一个文件,则该对话框保持打开状态。 我可以通过让用户选择一个文件,然后剥离路径以找出该文件所属的目录来“破解”该功能,但这充其量是不直观的。 有人看过吗? 回答1 您可以为此使用内置的FolderBrowserDialog类。 不必介意它在System.Windows.Forms命名空间中。 using (var dialog = new System.Windows.Forms.FolderBrowserDialog()) { System.Windows.Forms.DialogResult result = dialog.ShowDialog(); } 如果希望该窗口在某些WPF窗口上具有模式,请参阅问题如何从WPF应用程序中使用FolderBrowserDialog。 编辑:如果您要比普通的,丑陋的Windows窗体FolderBrowserDialog多花哨的东西,可以使用一些替代方法来使用Vista对话框: 第三方库,例如Ookii对话框(.NET 4.5+) Windows API代码包外壳程序: using Microsoft.WindowsAPICodePack
  • 如何将图像插入RichTextBox?(How can I insert an image into a RichTextBox?)
    问题 我看到的大多数示例都说将其放在剪贴板上并使用粘贴,但这似乎不是很好,因为它会覆盖剪贴板。 我确实看到了一种使用Pinvoke将图像手动转换为RTF并将图像转换为WMF的方法。 这是最好的方法吗? 我还能做些更简单的事情吗? 回答1 最直接的方法是修改RTF代码以自己插入图片。 在RTF中,图片的定义如下: '{'\ pict(brdr?&shading?&picttype&pictsize&metafileinfo?)数据'}'问号表示控制字是可选的。 “数据”只是十六进制格式的文件内容。 如果要使用二进制文件,请使用\ bin控制字。 例如: {\pict\pngblip\picw10449\pich3280\picwgoal5924\pichgoal1860 hex data} {\pict\pngblip\picw10449\pich3280\picwgoal5924\pichgoal1860\bin binary data} \ pict =开始一个图片组,\ pngblip = png图片\ picwX =图片的宽度(X是像素值)\ pichX =图片的高度\ picwgoalX =所需的图片宽度(以缇为单位) 因此,要插入图片,只需打开图片,将数据转换为十六进制,将这些数据加载到字符串中,然后在其周围添加RTF代码即可定义RTF图片。 现在
  • VBScript打开对话框以选择文件路径(VBScript to open a dialog to select a filepath)
    问题 目前,我正在使用vbscript打开文件,如下所示: strFile = "C:\Users\test\file.txt" Set objFile = objFSO.OpenTextFile(strFile) 我想更改此设置,以便用户可以选择/导航到文件,并在脚本中使用该文件。 如何添加此功能? 我试图搜索如何加载文件对话框/提示用户输入文件等,只是不确定如何在VBScript中完成。 回答1 我从MS TechNet中发现了另一种有趣的解决方案,那就是减少定制,但获得了您想要实现的目标。 这将返回所选文件的完整路径。 Set wShell=CreateObject("WScript.Shell") Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""") sFileSelected = oExec.StdOut.ReadLine wscript.echo sFileSelected 回答2 干得好: http
  • 如何将 OpenFileDialog 函数应用于 Web 应用程序(How to Apply OpenFileDialog Function to a WebApplication)
    问题 我正在开发一个 Web 应用程序,其中一个页面有一些必要性,用户应该选择系统中的任何文件夹,例如,如果他选择 ex:D:\xyz,那么这个路径应该保存在数据库中,我已经编写了代码用于存储到数据库中并保留所有内容。 但实际上我认为,如果它就像一个浏览按钮点击功能来选择文件夹,我所做的是,因为我不知道如何在 Web 应用程序中制作它,我只是使用了一个文本框来让用户输入路径. 任何人都可以帮助我如何在网页中应用打开文件对话框功能吗? 提前致谢, 问候卡利安。 回答1 没有用于选择文件夹的 ASP.Net 控件。 作为一个简单的解决方法,您可以使用 FileUpload-Control 让用户选择一个文件,然后您可以保存该文件的文件夹。 但这仅适用于 IE,因为其他浏览器不会发布完整的文件路径,而只会发布文件名(安全限制)。 编辑:正如 Ben 提到的,这在 IE>7 中也不起作用:http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection。 aspx( File Upload Control部分) 回答2 对于 Web 应用程序: System.IO.FileInfo file = new System.IO.FileInfo(file1); Response
  • C#-如何自定义OpenFileDialog以选择多个文件夹和文件?(C# - How to customize OpenFileDialog to select multiple folders and files?)
    问题 我已经发布了-如何使用OpenFileDialog选择文件夹?,我找不到正确的答案。 所以,我改变了我的问题。 我想自定义OpenFileDialog以选择多个文件夹和文件。 我试图找到一种解决方案,并且可以看到一些有关它的帖子。 从互联网上,我找到了以下项目-https://github.com/scottwis/OpenFileOrFolderDialog。 但是,在使用此功能时,我遇到了一个问题。 它使用MFC中的GetOpenFileName函数和OPENFILENAME结构。 OPENFILENAME的成员名为“ templateID ”。 它是对话框模板的标识符。 并且该示例项目具有“ res1.rc ”文件,并且其中还具有模板化对话框。 但是我不知道如何将此文件附加到我的C#项目中? 还是有其他完美的解决方案-“如何自定义OpenFileDialog以选择多个文件夹和文件? ”? 回答1 如果使用FileNames属性而不是FileName属性,则会得到每个选定文件的字符串数组,并使用shift键选择多个文件。 像这样: private void button1_Click(object sender, EventArgs e) { OpenFileDialog x = new OpenFileDialog(); x.Multiselect = true; x
  • C#,WPF-未出现OpenFileDialog(C#, WPF - OpenFileDialog does not appear)
    问题 我一直在网上上下搜索,不幸的是从未遇到过像我这样的问题,所以去了: 我的C#WPF应用程序不会显示OpenFileDialogs或SafeFileDialogs。 private void btnBrowseNet_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.CheckPathExists = true; ofd.Multiselect = false; ofd.Title = "Open Network Configuration Batch file..."; ofd.ValidateNames = true; ofd.Filter = "Comma Seperated Value Files|*.csv"; if (ofd.ShowDialog() == true) { //... } } 这段精确的代码在某种情况下确实可以实现预期的功能,几乎五分钟后,我可以单击所有想要的按钮,什么都没有发生,只不过鼠标指针变成了一个忙碌指示器,然后什么也没有。 我可以逐步介绍该方法或执行类似的操作 bool? shown = ofd.ShowDialog(); 但是无论如何,该对话框都不会显示。 当然,在这种情况下,显示将是错误的。
  • ui 多选自定义与 jqGrid 一起用于列重新排序(ui Multiselect customization when used with jqGrid for column reordering)
    问题 当与 ui.multiselect.js 一起使用时,请找到与 jqGrid 一起使用的列重新排序和列选择器对话框。 我想在不更改 js 文件的情况下更改 ui.multiselect 插件的样式。 只是想覆盖一些东西。 首先,我希望两个列标题处于相同的高度 - 选择了 6 个项目,右侧列标题全部添加。 我想将选定的 6 个项目的文本更改为 Avlialble Columns,将右列标题更改为 Hidden Columns。 如何通过在单独的文件 (js) 中覆盖 ui.multiselect 插件来完成此操作,因此当我调用 grid.jqGrid('columnChooser') 时,它会自动应用覆盖样式。 回答1 首先,我觉得你的问题很有趣,所以我 +1。 您发布的图片中的一件事不是您问题的直接部分,这似乎让我有点奇怪:“列选择器”对话框在对话框的右下角没有可调整大小的部分。 它可能是您使用的一些附加设置。 我个人觉得让对话框可调整大小更好。 现在回到你的主要问题。 要更改默认文本“选定的项目”、“全部添加”和“全部删除”,您可以使用以下代码: $.extend($.ui.multiselect, { locale: { addAll: 'Make all visible', removeAll: 'Hidde All', itemsCount: 'Avlialble
  • 多选文件夹和文件(multi select folders and files)
    问题 可以使用 OpenFileDialog 选择多个文件。 (设置多选为真) 问题是如何同时选择多个文件和文件夹? 我知道什么是 FolderBrowseDialog,我知道我应该按住 ctrl 或 shift! :D 假设一个文件夹包含 5 个文件夹和 2 个文件,场景是选择例如 1 个文件和 2 个文件夹。 我不知道为什么人们不赞成这个问题!! - - - - - - - - - 编辑 - - - - - - - - - - 假设有一个 OpenFileDialog,您可以在文件夹中选择任意数量的文件,好吗? 我想要这样的东西,但也可以选择文件夹! 因为 OpenFileDialog 在 FileNames 数组中返回选定的文件名,该对话框返回类似 SelectedPaths 数组的内容,其中包含文件名和文件夹路径。 回答1 Common Item Dialog(它取代了 Open File Name Common Dialog Box)有几个自定义点。 我还没有尝试过,但是通过挂钩 IFileDialogEvents,您应该能够根据需要更改行为。 (您可能需要添加一些技巧,在 XP 样式文件对话框中使用 OFNHookProc 是可能的) 尽管这意味着阅读大量令人沮丧的 Microsoft 文档,但它比开发自定义对话框更可取: 复制平台功能时,您必须复制所有功能。