【问题标题】:C# custom file extension filterC# 自定义文件扩展名过滤器
【发布时间】:2021-03-18 07:26:03
【问题描述】:

我正在尝试读取目录中的文档列表。我了解过滤器修饰符如何在高水平上工作并且以前使用过它们。但是,这一次我需要过滤一些没有标准化扩展名的东西(即“*.txt”或*.pdf“)。

我正在使用在...上找到的示例 https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.filedialog.filter?view=net-5.0

 using System;

using System.Windows.Forms;

namespace COMS2412_Readin
{
    public partial class Form1 : Form
    {
        string Serial_num = null;
        string INI_file_dir_temp = null;
        string CONFIG_data = null; 
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Allow user to enter serial number and load it for useage later. 
            Serial_num = Serial_number_text.Text;
            try
            {
                using (OpenFileDialog COMS_file_dialog = new OpenFileDialog())
                {
                    COMS_file_dialog.InitialDirectory = "c:\\";
                    //Have dialog box filter out all files without the .INI extention. 
                    COMS_file_dialog.Filter = "txt files (*.INI)|*.INI|All files (*.*)|*.*"; //Failed
                    //                    COMS_file_dialog.Filter = "*.INI"; //Failed
                    //                    COMS_file_dialog.Filter = "(*.INI)"; //Failed
                    //                    COMS_file_dialog.Filter = "(INI files | *.INI)"; //Failed
                    COMS_file_dialog.FilterIndex = 2;
                    COMS_file_dialog.RestoreDirectory = true;
                    if (COMS_file_dialog.ShowDialog() == DialogResult.OK)
                    {
                        //Check to make sure it was the correct file type. 
                        INI_file_dir_temp = COMS_file_dialog.FileName;
                    }
                }
            }
            catch
            {
                //Sorry there was an error with opening the file. Please ensure the file is not currently open. 
            }
        }
    }
}

我正在处理的项目从外部设备导入配置文件。问题是实际上有数千个文件,每个文件都有不寻常的文件扩展名。例如*.INI 是我要过滤的扩展之一。我试过只输入 `*.INI 作为参数,但它没有用。我错过了什么?有没有办法改变...

openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

过滤特定的文件扩展名?

【问题讨论】:

  • 出于某种原因,Stackoverflow 编辑了我的条目并省略了“*.INI”前面的星号。我知道根据文件扩展名进行文件搜索,即使在探索中,这个星号也是必需的。
  • 您从文档中发布代码,但要求我们在您使用*.INI 的地方修复您的代码?为什么不只发布真实代码?回答您的评论时,您需要将代码包装在刻度中(或使用编辑器中的代码按钮)以避免它以某种方式被解释。我已相应地编辑了您的问题。
  • 谢谢!我会在未来记住这一点。至于确切的代码,它是相同的代码块,只是具有不同的变量名称来补充我的数据集。我认为如果我使用熟悉的代码块和熟悉的变量名,这将有助于提高可读性。如果我的假设不正确,我很抱歉。
  • 只需编辑您的问题并将其替换为真实代码即可。或者至少在从文档中复制和粘贴代码之后添加它。
  • 您所说的“标准化扩展”是什么意思,您使用的代码如何“失败”?您的意思是您的目录中有 INI 格式的文件,但没有 .ini 扩展名?

标签: c# filter file-io openfiledialog


【解决方案1】:

最后,有一些有用的东西......

openFileDialog.Filter = "(*.INI)|*.INI";

这会过滤掉不属于.INI 扩展名的所有内容。特别是对我来说,我必须以管理员身份运行 VS 并确保文件没有被隐藏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 2014-12-01
    • 2015-09-11
    • 2020-03-03
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多