6 out of 10 rated this helpful - Rate this topic

FileDialog.Filter Property

Gets or sets the current file name filter string, which determines the choices that appear in the "Save as file type" or "Files of type" box in the dialog box.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
public string Filter { get; set; }

Property Value

Type: System.String
The file filtering options available in the dialog box.
Exception Condition
ArgumentException

Filter format is invalid.

For each filtering option, the filter string contains a description of the filter, followed by the vertical bar (|) and the filter pattern. The strings for different filtering options are separated by the vertical bar.

The following is an example of a filter string:

Text files (*.txt)|*.txt|All files (*.*)|*.*

You can add several filter patterns to a filter by separating the file types with semicolons, for example:

Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*

Use the FilterIndex property to set which filtering option is shown first to the user.

The following code example uses the OpenFileDialog implementation of FileDialog and illustrates creating, setting of properties, and showing the dialog box. The example uses the Filter and FilterIndex properties to provide a list of filters for the user. The example requires a form with a Button placed on it and the System.IO namespace added to it.


private void button1_Click(object sender, System.EventArgs e)
{
    Stream myStream = null;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        try
        {
            if ((myStream = openFileDialog1.OpenFile()) != null)
            {
                using (myStream)
                {
                    // Insert code to read the stream here.
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
        }
    }
}
    


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Filtering by pattern in file name using wildcard
If you want to filter files not only by extension but also by certain part of file name use also FileName property. Lets say you want to open only certain  .csv file  in directory with CallerCalleeSummary pattern in the name (profiling output files):                                                                                                                                dlg.FileName = "*CallerCalleeSummary*";                                                                                                        dlg.Filter = "CSV and TXT (*.csv;*.txt)|*.csv;*.txt";
Multiple extension filters
If you want to include multiple file extensions, use a ';' character to separate them
C++
this->openFileDialog1->DefaultExt = L"*.exe;*.dll";
this->openFileDialog1->Filter = L"EXEs and DLLs (*.exe;*.dll)|*.exe;*.dll";

C#
this.openFileDialog1.DefaultExt = "*.exe;*.dll";
this.openFileDialog1.Filter = "EXEs and DLLs (*.exe;*.dll)|*.exe;*.dll";

Note that these properties may be set in the WinForms designer too.