Kugel
Kugel

Reputation: 19844

How to open new OpenFileDialog automatically in Vista/Win7?

I'm on Vista and I'm using Microsoft.Win32.OpenFileDialog class.

When I call ShowDialog() I get the old XP-style dialog: alt text

How do I get the new Vista-style dialog with fallback to the old one on WindowsXP? alt text

A bit of rumble:

I don't really understand why they didn't replace the dialog in vista, but kept both of them. Now legacy apps will never open new dialog, unless updated.

Upvotes: 0

Views: 2569

Answers (3)

Hans Passant
Hans Passant

Reputation: 941635

Yes, you'd have to upgrade to .NET 4.0 to get the new dialog. If you're stuck on 3.5 then you can use System.Windows.Forms.OpenFileDialog, it did get the update to use the new IFileDialog COM interface.

The fallback is automatic but you can use its AutoUpgradeEnabled property to force legacy, if necessary. Which it is not, unlikely that a .NET program would modify the dialog.

Upvotes: 2

Sorax
Sorax

Reputation: 2203

Reference System.Windows.Forms

using System.Windows.Forms

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)
{
    //Do Stuff
}

Upvotes: 1

Brian R. Bondy
Brian R. Bondy

Reputation: 347276

The first dialog you showed is a save dialog not an open dialog.

You should only have to do this:

OpenFileDialog OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "My files (*.myfile)|*.myfile|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.RestoreDirectory = true;

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
  //openFileDialog1.FileName
}

Upvotes: 1

Related Questions