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();
}
}
}