是否可以强制OpenFileDialog不显示快捷方式?
我只想获取pdf,所以我正在使用这样的过滤器
var dialog = new OpenFileDialog
{
Multiselect = false,
Filter = "Pdf Files|*.pdf"
};
但是显示对话框时,它将显示扩展名为pdf
且扩展名为和 lnk
的文件
是否可以预防?
答案 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;
因此打开文件对话框应该相同