2010-05-31 14 views
0

Si je spécifie OpenFileDialog.AutoUpgradeEnabled = true, mon programme affiche toujours l'ancienne boîte de dialogue de style XP. Une idée de comment cela a-t-il pu arriver? Ceci après activer thématisation Main()OpenFileDialog.AutoUpgradeEnabled ne fonctionne pas sous Vista ou 7?

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.Run(new Primary()); 
} 

et ceci est mon code de dialogue:

private void OpenProgramFile() 
{ 
    OpenFileDialog programFileDialog = new OpenFileDialog(); 
    programFileDialog.Filter = "Program files (*.exe;*.lnk)|*.exe|All files (*.*)|*.*"; 
    programFileDialog.FilterIndex = 0; 
    programFileDialog.Title = "Select program file"; 
    programFileDialog.AutoUpgradeEnabled = true; 
    programFileDialog.ShowHelp = true; 

    DialogResult fileResult = programFileDialog.ShowDialog(); 
    if (fileResult != DialogResult.OK) 
     return false; 

    programFileDialog.Dispose(); 
} 

Alors, pourquoi AutoUpgradeEnabled fonctionne pas?

Répondre

3

Évitez de définir programFileDialog.ShowHelp=true. La propriété ShowHelp n'est pas compatible avec l'interface utilisateur du fichier de configuration Vista/7. La boîte de dialogue d'ouverture de fichier affichera toujours une icône d'aide de point d'interrogation.

+0

Ah, voilà ce que c'était! Cela a été défini parce que ShowHelp = false a bloqué mon application, et à l'époque, je n'ai pas spécifié [STAThread] pour "thread-safe". Merci! – DigiMarco

0

Si vous souhaitez utiliser des boîtes de dialogue de style Windows Vista ou Windows 7, vous devez utiliser le pack de code API Microsoft Windows: http://code.msdn.microsoft.com/WindowsAPICodePack. Cela inclut toutes les boîtes de dialogue Windows 7 Style.

+2

Bien que cela soit vrai, un service pack pour le .NET Framework a garanti que vous disposiez de la nouvelle version de la boîte de dialogue «Common File», à moins que vous ne choisissiez délibérément des options donnant l'impression d'être old school. Je suis un grand défenseur du Code Pack, mais seulement si vous en avez besoin. –