如何检查应用了哪些过滤器

Posted

技术标签:

【中文标题】如何检查应用了哪些过滤器【英文标题】:How to check what filter is applied 【发布时间】:2012-08-15 06:28:26 【问题描述】:

我正在开发 xpdl 格式的导出数据。有 2 个选项 - 版本 2.1 和 2.2。我正在使用 SaveFileDialog,但是如何区分这 2 个选项?

        SaveFileDialog dlg = new SaveFileDialog();
        dlg.Filter = "xpdl 2.1|*.xpdl|xpdl 2.2|*.xpdl";
        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        
            //how can I check, which format is selected?
        

【问题讨论】:

【参考方案1】:

您可以通过检查FilterIndex 属性来获取或设置对话框的选定过滤器。正如 msdn 中所述:

第一个过滤条目的索引值为1。

所以你的任务是:

        SaveFileDialog dlg = new SaveFileDialog();
        dlg.Filter = "xpdl 2.1|*.xpdl|xpdl 2.2|*.xpdl";
        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        
            switch (dlg.FilterIndex)
            
                case 1:
                    //selected xpdl 2.1
                    break;
                case 2:
                    //selected xpdl 2.2
                    break;
            
        

【讨论】:

【参考方案2】:

拆分过滤器列表。然后查看FilterIndex。

SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "xpdl 2.1|*.xpdl|xpdl 2.2|*.xpdl";
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)

    string[] filterstring = saveFilaDialog.Filter.Split('|');
    MessageBox.Show(filterstring[(saveFilaDialog.FilterIndex - 1) * 2]);

【讨论】:

很好的答案 sarathi...我有 30 多个过滤器,所以必须做一个案例陈述会很痛苦。

以上是关于如何检查应用了哪些过滤器的主要内容,如果未能解决你的问题,请参考以下文章

初识华为防火墙应用层过滤技术

可以应用哪些核心图像过滤器来改善文本文档的图像?

tcpdump 协议过滤哪些协议

拦截器或过滤器

如何检查 java servlet 过滤器中的 OPTIONS 方法调用?

哪些特定用例需要 Struts2 之外但在同一个 Web 应用程序中的 servlet 过滤器?