【发布时间】:2021-02-26 23:25:12
【问题描述】:
OpenFileDialog 显示后,我希望能够使用 Windows 10 搜索索引来缩小文件列表。这就像您在 Windows 探索中并在搜索框中键入内容一样,该搜索框也显示在右侧的 OpenFileDialog 中。
从 Jimi 的 cmets 中,我发现清除搜索的唯一方法是恢复初始目录。为此,您必须使用环境变量。通过这样做,我现在(仍然)有一个问题。当我在搜索框中输入任何字符时,不会显示任何文件。
我希望能够打开对话框,例如,转到搜索框并输入“Charles”,然后仅列出名称中包含 Charles 的文件。
我用来打开对话框的修改代码是:
using(OpenFileDialog GetPhoto = new OpenFileDialog())
{
GetPhoto.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures);
GetPhoto.RestoreDirectory = true;
GetPhoto.Filter = "All Files|*.*|All I
images|*.jpg;*.jpeg;*.png;*.gif;*.tif;*.bmp|JPEG Images|*.jpg|PNG
Images|*.png";
GetPhoto.Multiselect = true;
if (GetPhoto.ShowDialog() == DialogResult.OK)
【问题讨论】:
-
尝试使用
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); -
您可以存储最后选择的目录并将
InitialDirectory设置为选择的第一个文件名的路径。类似于:if (ofd.FileName.Length > 0) { ofdLastDir = Path.GetDirectoryName(ofd.FileName); },其中ofd是 OpenFileDialog 实例,ofdLastDir是存储路径的字段。 -- 你需要用using声明你的OpenFileDialog:using (var ofd = new OpenFileDialog()) { ofd.InitialDirectory = ofdLastDir; ... }。 -
按照您的建议设置 InitialDirectory 确实清除了我上次搜索返回的所有文件。这在没有在 using 语句中声明的情况下工作(我现在已经完成了)。主要问题仍然存在。如果我开始在搜索框中输入“Charles”,目录中不会显示任何文件。我还想指出,我所有的照片都存储在我无法在 SpecialFolder 中找到的 Public Pictures 文件夹中。
-
Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures); -
我已经尝试了所有的 SpecialFolder 变量。那个只是把我放在我的图片文件夹中,而不是公共的。目前正在使用 GetPhoto.InitialDirectory = Environment.ExpandEnvironmentVariables("%PUBLIC%")。我试图设置自己的系统变量,但没有奏效。同样,我真正需要帮助的是使用搜索框。鉴于缺乏响应和帖子,使用 openfile 对话框时甚至可能吗?因为我每次使用对话框文件名都需要选择我的文件夹也不起作用。请帮助我进行搜索。谢谢
标签: c# winforms search openfiledialog