我在 Vista 上,我正在使用Microsoft.Win32.OpenFileDialog
类。
当我打电话时,ShowDialog()
我得到了旧的XP 样式对话框:
如何在 WindowsXP 上 获得回退到旧对话框的新Vista 样式对话框?
一点隆隆声:
我真的不明白为什么他们没有替换 vista 中的对话框,而是保留了它们。现在旧版应用程序将永远不会打开新对话框,除非更新。
我在 Vista 上,我正在使用Microsoft.Win32.OpenFileDialog
类。
当我打电话时,ShowDialog()
我得到了旧的XP 样式对话框:
如何在 WindowsXP 上 获得回退到旧对话框的新Vista 样式对话框?
一点隆隆声:
我真的不明白为什么他们没有替换 vista 中的对话框,而是保留了它们。现在旧版应用程序将永远不会打开新对话框,除非更新。
是的,您必须升级到 .NET 4.0 才能获得新对话框。如果您卡在 3.5 上,那么您可以使用 System.Windows.Forms.OpenFileDialog,它确实获得了更新以使用新的 IFileDialog COM 接口。
回退是自动的,但如有必要,您可以使用其 AutoUpgradeEnabled 属性强制使用旧版。事实并非如此,.NET 程序不太可能修改对话框。
您显示的第一个对话框是保存对话框而不是打开对话框。
你应该只需要这样做:
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
}
参考 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
}