C#文件过滤器 filter

本文详细解析了OpenFileDialog对话框中Filter属性的构成与用途,包括如何设置来筛选特定类型的文件,如.txt、.doc、.jpg、.png、.gif等。同时提供了一个示例代码,展示了如何通过Filter属性实现文件类型的选择和保存路径的获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenFileDialog对话框的Filter属性说明:
 
首先说明一个示例,分析一下Filter属性的构成:“ Excel文件|*.xls ”,前面的“Excel文件”成为标签,是一个可读的字符串,可以自定定义,“|*.xls”是筛选器,表示筛选文件夹中后缀名为.xls的文件,“*”表示匹配Excel文件名称的字符串。
 
OK,下面说说我们经常要用到的几种情况:
 
1. Filter是null或Empty,表示显示所有文件,并总会显示文件夹
 
2. 需要筛选特定的文件,设置Filter属性为“标签|*.后缀”,按照这个格式设置,标签可以自定义,是字符串即可,后缀表示你需要筛选的文件后缀,例如“.txt、.doc”等
 
3. 需要筛选多种文件,比方说需要筛选图片文件,但是图片文件的后缀有几种,例如jpg、png、gif等,当需要同时筛选这些文件,设置Filter属性为“标签|*.jpg;*.png;*.gif”,注意:只是在筛选器中多添加了几个后缀,不同后缀之间使用分号隔开
 
4.当需要筛选多种文件,但是不同时将它们全部列出来,只有用户分别通过下拉列表选择需要的文件类型时,才进行筛选。这种情况下只需要多设置几个筛选器即可,filter属性设置如下:“标签1|*.jpg|标签2|.png|标签3|.gif”。注意:不同的筛选器之间使用“|”分隔即可。
 
Filter属性类似与正则表达式,试用*表示匹配文件名的字符,使用“.后缀”匹配文件的后缀名,通过连接后缀(试用;号将需要的后缀分开)表示同时筛选所有的符合后缀的文件,通过“|”连接不同的筛选器表示通过用户选择后缀名称来进行文件筛选


部分代码:

 public void ExportPng(Boolean isTransparent)
        {
            String strName = GetPath("png");
            if (strName != String.Empty) //当在保存时,点击取消时为空
            {
                m_mapControl.Map.OutputMapToPNG(strName, isTransparent);
            }
            else
            {
                MessageBox.Show("a");
            }
        }
 
        private String GetPath(String strType)
        {
            String result = String.Empty;
            SaveFileDialog saveDislog = new SaveFileDialog();
            saveDislog.Title = "保存路径";
            saveDislog.Filter = String.Format("{0}格式(*.{0})|*.{0}", strType);
            if (saveDislog.ShowDialog() == DialogResult.OK)
            {
                result = saveDislog.FileName;
            }
            return result;
        }

### C#过滤器 (Filter) 的用法与实现 在 C# 编程中,过滤器通常用于筛选集合中的数据项。通过 LINQ(Language Integrated Query),可以方便地实现这一功能。LINQ 提供了一种简洁而强大的语法来操作集合对象。 #### 使用 `Where` 方法进行过滤 C# 中最常见的过滤方法是使用 LINQ 的 `Where` 函数。此函数接受一个谓词作为参数,并返回满足条件的元素集合[^1]。 以下是基于列表的一个简单示例: ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // 过滤出大于等于 3 的数字 IEnumerable<int> filteredNumbers = numbers.Where(n => n >= 3); foreach (var number in filteredNumbers) { Console.WriteLine(number); } } } ``` 上述代码展示了如何利用 Lambda 表达式定义过滤逻辑并应用到整数列表上。 #### 自定义过滤器类 除了内置的方法外,还可以创建自定义过滤器以增强灵活性。例如,在 ASP.NET Core MVC 或 Web API 应用程序中,可以通过继承特定基类(如 `ActionFilterAttribute`)来自定义行为[^3]。 下面是一个简单的日志记录过滤器例子: ```csharp using Microsoft.AspNetCore.Mvc.Filters; using System.Diagnostics; public class LogExecutionTimeAttribute : ActionFilterAttribute { private Stopwatch _stopwatch; public override void OnActionExecuting(ActionExecutingContext context) { _stopwatch = Stopwatch.StartNew(); } public override void OnActionExecuted(ActionExecutedContext context) { _stopwatch.Stop(); var controllerName = context.RouteData.Values["controller"]; var actionName = context.RouteData.Values["action"]; var elapsedMilliseconds = _stopwatch.ElapsedMilliseconds; Debug.WriteLine($"Controller: {controllerName}, Action: {actionName} executed in {elapsedMilliseconds} ms."); } } ``` 这段代码展示了一个属性型过滤器,它可以在控制器动作执行前后插入额外处理逻辑。 #### 性能测试工具推荐 如果需要评估不同过滤策略之间的性能差异,则可考虑引入第三方库——BenchmarkDotNet 来完成精确测量工作[^2]。其安装命令如下所示: ```bash dotnet add package BenchmarkDotNet ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值