Solved

File filter in managed Visual C++ .NET

Posted on 2004-08-22
10
565 Views
Last Modified: 2013-12-03
I’ve been trying to apply in managed VC++.NET the file filter which I use in VB.NET and which works fine there, supposing that in Visual Studio .NET those filters should not be language specific. Thus, in the Properties of the openFileDialog of a VC++.NET form, in the section Filter, I type in:

Document Files(*.txt)|*.txt

But it doesn’t seem to filter out the .txt files when I open the dialog.

Aslo, I’d like to have the extension .txt automatically attached to the file name when I type it in the saveFileDialog. How is all this done in managed Visual C++ .NET?
0
Comment
Question by:judico
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 3
10 Comments
 
LVL 19

Accepted Solution

by:
drichards earned 250 total points
ID: 11867191
This will show only text files and add a .txt extension if you type in a new file name without an extension.  The SaveFileDialog is identical.

    System::Windows::Forms::OpenFileDialog *ofd = new System::Windows::Forms::OpenFileDialog();
    // Set up default extension
    ofd->AddExtension = true;
    ofd->DefaultExt = S"txt";
    ofd->CheckFileExists = false;

    // Set up filter
    ofd->Filter = S"Document Files (*.txt)|*.txt";

    if ( ofd->ShowDialog() == System::Windows::Forms::DialogResult::OK )
    {
        System::Console::WriteLine(ofd->FileName);
    }
0
 

Author Comment

by:judico
ID: 11867402
Thank you so much for the prompt answer. I had to comment out the following, however:

if ( ofd->ShowDialog() == System::Windows::Forms::DialogResult::OK )
    {
        System::Console::WriteLine(ofd->FileName);
    }

Is there any specific reason why it should be there?  Also, I 'm still puzzled why wouldn't filtering work in managed VC++ .NET when set through the Properties of the form? I'm just curious and it has no bearing on your excellent answer. I wonder if I should ignore these Properties that accompany the forms and should learn to do everything through code?


P.S. I increased your points to 250. Please let me know if you have problems in receiving the increased points.
0
 
LVL 19

Expert Comment

by:drichards
ID: 11867435
The 'if' statement is to test whether the dialog was cancelled or not - the test is true if the dialog was not cancelled.  The line inside the block was just a test line to print out the selected file name.

As for setting properties, I (almost) always code by hand, so I don't know why setting properties of the dialog would not work.  If I get some time I'll try it and see if it works.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:judico
ID: 11867647
OK, thanks again ...
0
 

Author Comment

by:judico
ID: 11870770
Since I don't see the ponts for answering this question increased I asked for increase in the Community Support:

http://www.experts-exchange.com/Community_Support/Q_21103692.html
0
 

Author Comment

by:judico
ID: 11870783
Just, out of curiosity, how can one have other file types listed in the drop-down menu of the openFileDialog?
0
 
LVL 19

Expert Comment

by:drichards
ID: 11870958
The filter is a concatenation of string pairs where each string is separated by '|'.  So to get multiple filter selections, just keep adding:

    ofd->Filter = S"Document Files (*.txt)|*.txt|Word Files (*.doc)|*.doc";

will give you two selections - "Document Files (*.txt)" and "Word Files (*.doc)".  You could keep going and tack on "|Excel Files (*.xls)|*.xls", etc.  You can also do multiple extensions at once by using ';' as a separator in the extension part of the pair:

    ofd->Filter = S"Document Files (*.txt)|*.txt|Word Files (*.doc,*.zip)|*.doc;*zip";
0
 

Author Comment

by:judico
ID: 11871876
Thanks a lot. I would appreciate it if you could take a look at:

http://www.experts-exchange.com/Hardware/Q_21102023.html

Thanks in advance.
0
 

Author Comment

by:judico
ID: 11877109
Netminder,

Thank you ... I just increased the number of points ... Please let me know if there are other problems.

judico
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticall…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

695 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question