OpenFileDialog继续显示.lnk文件WPF

时间:2019-05-09 13:12:05

标签: c# wpf filter openfiledialog

是否可以强制OpenFileDialog不显示快捷方式?

我只想获取pdf,所以我正在使用这样的过滤器

var dialog = new OpenFileDialog
            {
                Multiselect = false,
                Filter = "Pdf Files|*.pdf"
            };

但是显示对话框时,它将显示扩展名为pdf且扩展名为 lnk的文件

example image

是否可以预防?

4 个答案:

答案 0 :(得分:1)

The answer is from the MSDN forums

开箱即用的OpenFileDialog无法做到这一点。 原因可能是用户可以使用.lnk个文件导航到另一个文件夹,他/她希望在该文件夹中打开该文件。

在上面发布的链接中,用户'Ryan'发布了一个代码段,以排除.lnk事件中所选的FileOK文件。

再次,不是我的代码!但是由于某些网站会移动其内容并且链接可能不再起作用,因此这里是“ Ryan”的代码段(用VB编写):

Public Class Home

    Private WithEvents _fileDialog As New OpenFileDialog

    Private Sub BrowseButton1_Click(sender As Object, e As EventArgs) Handles BrowseButton1.Click
        With Me._fileDialog
            .DereferenceLinks = True    ' this allows the FileName property to have the Target of a shortcut link, instead of the shortcut link file name
            .Multiselect = False
            .Filter = "CSV (Comma delimited) (*.csv)|*.csv"
            .ShowDialog()
        End With
    End Sub

    Private Sub _fileDialog_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles _fileDialog.FileOk
        If Not Me._fileDialog.FileName Like "*.csv" Then
            ' cancel any shortcut files here
            e.Cancel = True
            MsgBox("You must select a CSV (Comma delimited) file.", MsgBoxStyle.Exclamation)
        Else
            Me.TextBox1.Text = Me._fileDialog.FileName
        End If
    End Sub

End Class

答案 1 :(得分:0)

您不想显示.lnk文件的原因是因为您需要实际PDF文件的路径吗?如果是这样,您应该可以将DereferenceLinks属性设置为true。如果用户选择.lnk文件,则对话框将返回.lnk文件指向的文件的路径,而不是.lnk文件本身。

答案 2 :(得分:0)

您无法创建“打开文件”对话框来隐藏特定文件。您唯一可以做的就是使用 Filter 标记来过滤指定的文件扩展名以进行保存,但不能隐藏。

答案 3 :(得分:-1)

I.E。在保存对话框中,我将其用于excel文件

SaveFileDialog saveFileDialog1 = new SaveFileDialog();

      saveFileDialog1.Filter = "Excel files (*.xlsx)|*.xlsx";
      saveFileDialog1.FilterIndex = 2;
      saveFileDialog1.RestoreDirectory = true;

因此打开文件对话框应该相同