如何在Vista / Win7中自动打开新的OpenFileDialog?

时间:2010-10-07 19:37:26

标签: c# windows-7 windows-vista openfiledialog savefiledialog

我在使用Vista,我正在使用Microsoft.Win32.OpenFileDialog类。

当我致电ShowDialog()时,我得到旧的 XP风格的对话框: alt text

如何在WindowsXP上获得新的 Vista风格的对话框并回退到旧版alt text

有点隆隆声:

我真的不明白为什么他们没有替换vista中的对话框,而是保留了它们。现在,旧版应用程序永远不会打开新对话框,除非更新。

3 个答案:

答案 0 :(得分:2)

是的,您必须升级到.NET 4.0才能获得新对话框。如果您坚持使用3.5,那么您可以使用System.Windows.Forms.OpenFileDialog,它确实获得了使用新的IFileDialog COM接口的更新。

回退是自动的,但如果需要,您可以使用其AutoUpgradeEnabled属性强制传统。不是这样,.NET程序不太可能修改对话框。

答案 1 :(得分:1)

您显示的第一个对话框是保存对话框,而不是打开的对话框。

你应该只需要这样做:

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
}

答案 2 :(得分:1)

参考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
}