Можно ли настроить .NET OpenFileDialog, чтобы пользователь мог выбрать файл .lnk

Я хочу показать диалоговое окно, которое позволит пользователю выбрать файл ярлыка (.lnk). Моя проблема в том, что диалоговое окно пытается получить файл/URL, на который указывает ярлык, а не сам файл .lnk.

Как я могу разрешить выбор файлов .lnk?


person McBainUK    schedule 28.02.2010    source источник


Ответы (2)


Вы можете использовать свойство OpenFileDialog.DereferenceLinks, чтобы повлиять на это поведение (см. документ).

var dlg = new OpenFileDialog();
dlg.FileName = null;
dlg.DereferenceLinks = false;

if (dlg.ShowDialog() == DialogResult.OK) {
    this.label1.Text = dlg.FileName;
}

or

var dlg = new OpenFileDialog();
dlg.FileName = null; 
this.openFileDialog1.Filter = "Link (*.lnk)|*.lnk";

if (dlg.ShowDialog() == DialogResult.OK) {
    this.label1.Text = dlg.FileName;

Оба метода дают файл .lnk, однако первый подход позволяет выбрать файлы .lnk или обычные файлы, а второй только выбирает файлы .lnk.

person AxelEckenberger    schedule 28.02.2010

Следующий код вернул мне имя файла .lnk

  public static string PromptForOpenFilename (Control parent)
  {
     OpenFileDialog dlg = new OpenFileDialog ();

     dlg.Filter = "Link (*.lnk)|*.lnk";
     dlg.Multiselect = false;
     dlg.FileName = null;

     DialogResult res;
     if (null != parent)
        res = dlg.ShowDialog (parent);
     else
        res = dlg.ShowDialog ();

     if (DialogResult.OK == res)
        return dlg.FileName;
     return null;
  }
person John Knoeller    schedule 28.02.2010
comment
Возвращает только файлы .lnk. DereferenceLinks позволяет выбирать обычные файлы или файлы .lnk. - person AxelEckenberger; 28.02.2010