I have the following code in my C# program:
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Open a file";
fDialog.Filter =
"NCF files (*.ncf)|*.ncf|All files (*.*)|*.*|No Extensions (*.)|*.";
I want to be able to have the user pick from the following:
*.NCF (files with .NCF extension only)
**.* (all files)
and files that have no extensions such as:
filewithnoextension
I know ***.* will do this, but it also displays the .NCF, .TXT, and all other files in the same directory.
I just want to be able to display filenames that have no extensions.
Filtering with *. does not do the trick. It works fine when doing it with a DOS window (dir *.) , but C# seems to ignore the *. filter.
Is there a way I can do this with C#?
Thanks.
If the other software program creates these files in the same location, why not have your code add an extension (something innocuous like “.XXX”) to every extension-less file in that folder, and then show the dialog?
Edit: Or, see this MSDN article:
http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx
From the Filters section:
Down at the bottom in the Explorer-Style Hook Procedures section, the article explains how to do this. Basically, you pass an event handler to the OpenFile dialog, and each time the user navigates to a new folder, the dialog iterates through all the files in the folder and calls your event handler for each one. Inside the event handler, you would put your code to determine if the file has an extension or not, and return true or false, accordingly.