Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can the .NET OpenFileDialog be setup to allow the user to select a .lnk file

I want to show a dialog that will allow the user to select a shortcut (.lnk) file. My problem is that the dialog tries to get the file/URL the shortcut is pointing to rather then the .lnk file itself.

How can I make it allow .lnk files to be selected?

like image 350
McBainUK Avatar asked Feb 28 '10 10:02

McBainUK


2 Answers

You can use the OpenFileDialog.DereferenceLinks property to influence that behaviour (see doc).

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;

Both methods yield a .lnk file, however the first approach allows the selection of .lnk files or normal files, while the second only selects .lnk files.

like image 177
AxelEckenberger Avatar answered Sep 19 '22 00:09

AxelEckenberger


The following code returned a .lnk filename for me

  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;
  }
like image 28
John Knoeller Avatar answered Sep 20 '22 00:09

John Knoeller