Как открыть новый OpenFileDialog автоматически в Vista / Win7? - PullRequest
0 голосов
/ 07 октября 2010

Я на Vista и использую Microsoft.Win32.OpenFileDialog класс.

Когда я звоню ShowDialog(), я получаю старое диалоговое окно в стиле XP: alt text

Как мне получить новый диалог в стиле Vista с откатом к старому в WindowsXP? alt text

Немного грохота:

Я не очень понимаю, почему они не заменили диалог в Vista, но сохранили их обоих. Теперь устаревшие приложения никогда не откроют новое диалоговое окно, если оно не обновлено.

Ответы [ 3 ]

2 голосов
/ 07 октября 2010

Да, вам нужно обновить до .NET 4.0, чтобы получить новое диалоговое окно.Если вы застряли на 3.5, тогда вы можете использовать System.Windows.Forms.OpenFileDialog, обновление получило использование нового интерфейса IFileDialog COM.принудительное наследие, если это необходимо.А это не так, вряд ли программа .NET изменит диалог.

1 голос
/ 07 октября 2010

Справочная система.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
}
1 голос
/ 07 октября 2010

Первый показанный вами диалог - это диалог сохранения, а не открытый диалог.

Вам нужно только сделать это:

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
}
...