Comment ouvrir une nouvelle OpenFileDialog automatiquement dans Vista / Windows 7?
-
28-09-2019 - |
Question
Je suis sur Vista et j'utilise la classe Microsoft.Win32.OpenFileDialog
.
Quand j'appelle ShowDialog()
je reçois l'ancien dialogue de style XP:
Comment puis-je obtenir nouveau Vista style de dialogue avec fallback l'ancien sur Windows XP?
Un peu de grondement:
Je ne comprends pas vraiment pourquoi ils ne remplacent pas la boîte de dialogue dans Vista, mais conservés tous les deux. Maintenant, les applications existantes ne sera jamais ouvert nouvelle boîte de dialogue, à moins mis à jour.
La solution
Oui, vous devriez passer à .NET 4.0 pour obtenir la nouvelle boîte de dialogue. Si vous êtes coincé sur 3,5, vous pouvez utiliser System.Windows.Forms.OpenFileDialog, il a fait obtenir la mise à jour pour utiliser la nouvelle interface IFileDialog COM.
Le repli est automatique, mais vous pouvez utiliser sa propriété AutoUpgradeEnabled à l'héritage de la force, si nécessaire. Ce qui il est peu probable qu'un programme .NET modifierait la boîte de dialogue.
Autres conseils
La première boîte de dialogue vous est montré une boîte de dialogue Enregistrer pas un dialogue ouvert.
Vous ne devriez avoir à faire ceci:
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
}
Référence 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
}