我在Vista上,我正在使用Microsoft.Win32.OpenFileDialog
類。如何在Vista/Win7中自動打開新的OpenFileDialog?
當我打電話ShowDialog()
我得到老 XP風格的對話框:
如何獲得回退到新 Vista風格對話框對WindowsXP的舊?
的隆隆聲了一下:
我真的不明白爲什麼他們不更換Vista中的對話框,但保留他們兩個。現在,除非更新,否則傳統應用程序將永遠不會打開新對話框
我在Vista上,我正在使用Microsoft.Win32.OpenFileDialog
類。如何在Vista/Win7中自動打開新的OpenFileDialog?
當我打電話ShowDialog()
我得到老 XP風格的對話框:
如何獲得回退到新 Vista風格對話框對WindowsXP的舊?
的隆隆聲了一下:
我真的不明白爲什麼他們不更換Vista中的對話框,但保留他們兩個。現在,除非更新,否則傳統應用程序將永遠不會打開新對話框
是的,你必須升級到.NET 4.0,以獲得新的對話框。如果你被困在3.5然後你可以使用System.Windows.Forms.OpenFileDialog,它確實得到更新使用新的IFileDialog COM接口。
回退是自動的,但如果需要,您可以使用其AutoUpgradeEnabled屬性強制遺留。它不是,.NET程序不太可能修改對話框。
是的,你是對的,我剛剛發現了s前一秒。 – Kugel 2010-10-07 19:56:03
我上面的代碼對我來說甚至編譯爲2.0,並從VS2008編譯。你確定它是@Kugel的.NET框架版本嗎?你可以試試你的新項目設置.NET框架版本嗎? – 2010-10-07 19:56:17
@布萊恩 - 那將是一個奇蹟。確保使用WPF程序中使用的Microsoft.Win32命名空間。 – 2010-10-07 19:59:22
您顯示的第一個對話框是保存對話框而不是打開的對話框。
您應該只有做到這一點:
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
}
這是否取決於您當前的系統主題? – 2010-10-07 19:41:26
哪個版本的.Net框架執行項目目標? – Goblin 2010-10-07 19:44:09
不,它不會,你得到兩個 – Kugel 2010-10-07 19:45:29