OpenFileDialog C#自定义过滤器,如';ABC*.pdf';

OpenFileDialog C#自定义过滤器,如';ABC*.pdf';,c#,.net,filter,openfiledialog,C#,.net,Filter,Openfiledialog,是否可以指定自定义筛选器,如'ABC*.pdf'这意味着:“显示所有以ABC开头的pdf” 我只能指定*.pdf,*.doc,*.*等 谢谢 弗洛里安的回答是直截了当的:不 您可以将筛选器设置为仅允许具有以下属性的特定文件类型Filter: fileOpenDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 但是过滤文件名是不可能的 在这种情况下,您可以创建自己的自定义OpenFIleDialog 有关更多信息,请参阅

是否可以指定自定义筛选器,如
'ABC*.pdf'
这意味着:“显示所有以ABC开头的pdf”

我只能指定
*.pdf
*.doc
*.*

谢谢
弗洛里安的回答是直截了当的:

您可以将筛选器设置为仅允许具有以下属性的特定文件类型
Filter

fileOpenDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
但是过滤文件名是不可能的

在这种情况下,您可以创建自己的自定义
OpenFIleDialog

有关更多信息,请参阅此链接:

是和否

:查看,页面。过滤器不是那样使用的。这只适用于扩展


:您可以编写自己的类来扩展/模仿OpenFileDialog,使用一些正则表达式来执行您想要的操作,只需对当前文件夹中的所有文件运行该匹配(可能需要一些工作,但如果您真的非常想要它,请尝试:)

,如我的评论中所述:


不幸的是,这是不可能的。但是您可以创建自己的FileDialog

要创建自己的FileDialog,可以使用以下方法:

  string[] Directories = Directory.GetDirectories(Path);
  string[] Files = Directory.GetFiles(Path);
现在根据您的规格筛选
文件
-数组:

List<string> wantedFiles = Files.ToList().Where(x => x.StartsWith("ABC"));
本文提供的代码应该可以解决这个问题

在这里可以找到一个实现我哥哥编写的自己的文件对话框的项目:

简言之,这应该可以做到:

foreach (string file in Directory.GetFiles(Path)
                                 .Where(x => new DirectoryInfo(x).Name.StartsWith("ABC")))
{
    //Add the string to your ListView/ListBox/...
}
使用以下命令:

Microsoft.Win32.OpenFileDialog myDialog. = new Microsoft.Win32.OpenFileDialog();
myDialog..DefaultExt = ".pdf";
myDialog.Filter = "FilesIWant (ABC*.pdf)|ABC*.pdf
已更新

在意识到以下情况会更好后,稍微更改了我的解决方案:

这不是一个完整的“硬过滤器”,但使用
FileName
属性仍应满足您的需要:

using System;
using System.Windows.Forms;

namespace TestingFileOpenDialog
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.openFileDialog1.FileName = "pro*";
            this.openFileDialog1.Filter = "Pdf Files|*.pdf";
            this.openFileDialog1.ShowDialog();
        }
    }
}
我想这可能取决于您使用的操作系统,但在我的情况下,它在Windows8上确实有效

我还意识到,这不会“永久”过滤掉所有不相关的文件,但它至少提供了一个初始过滤器

结果:
(如果文件名字段中没有
pro*
,将显示其他几个PDF文件)


不幸的是,这是不可能的。但是,您可以创建自己的
文件对话框
这是单独使用
过滤器
属性无法实现的,但是您基本上可以通过使用
文件名
属性并在那里输入
ABC*
来实现这一效果,因此,我认为C#中会有一种方法,FileChooser由Java呈现,OpenFileDialog由Win32呈现,后者不支持。谢谢,我认为对于meThere来说,一个带有过滤文件的列表框将是最好、最快的解决方案,然后。。。问题解决了。把你最喜欢的答案标记为答案,然后回到我想的编码:)+1是的,它在Windows7中对我有效。我认为这正是OP所寻找的。很明显,这是原始海报的第一次尝试,但它不起作用。请注意,此答案中链接的网站已被感染。
using System;
using System.Windows.Forms;

namespace TestingFileOpenDialog
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.openFileDialog1.FileName = "pro*";
            this.openFileDialog1.Filter = "Pdf Files|*.pdf";
            this.openFileDialog1.ShowDialog();
        }
    }
}