Est-il possible de forcer OpenFileDialog à ne pas afficher les raccourcis?
Je veux seulement obtenir le pdf, donc j'utilise le filtre comme ça
var dialog = new OpenFileDialog { Multiselect = false, Filter = "Pdf Files|*.pdf" };
Mais quand la boîte de dialogue s'affiche, elle affiche les fichiers avec l'extension pdf
et lnk
extension
Est-il possible de l'empêcher?
4 Réponses :
I.E. sur la boîte de dialogue d'enregistrement, je l'utilise comme ceci pour les fichiers Excel.
SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "Excel files (*.xlsx)|*.xlsx"; saveFileDialog1.FilterIndex = 2; saveFileDialog1.RestoreDirectory = true;
Donc, avec l'ouverture de fichier, la boîte de dialogue devrait être la même.
Ty pour vous le temps, j'ai défini les trois propriétés et les raccourcis continuent d'être visibles :(
La raison pour laquelle vous ne souhaitez pas afficher les fichiers .lnk
est-elle parce que vous voulez le chemin d'accès au fichier PDF? Si tel est le cas, vous devriez pouvoir définir le DereferenceLinks
sur true
. Si l'utilisateur sélectionne un fichier .lnk
, la boîte de dialogue renverra le chemin vers le fichier vers lequel pointe le fichier .lnk
plutôt que le .lnk
fichier lui-même.
La réponse vient des forums MSDN
Hors de la boîte, OpenFileDialog n'est pas capable de le faire.
Une raison pourrait être que les fichiers .lnk
pourraient être utilisés par un utilisateur, pour naviguer vers un dossier différent, où il / elle attend le fichier, qui doit être ouvert.
Dans le lien ci-dessus, l'utilisateur 'Ryan' a publié un extrait de code pour exclure les fichiers .lnk
sélectionnés dans l'événement FileOK
.
Encore une fois, non mon code! Mais comme certains sites Web déplacent leur contenu et qu'un lien peut ne plus fonctionner, voici l'extrait de code de 'Ryan' (écrit en 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
Vous ne pouvez pas créer de boîte de dialogue Ouvrir un fichier pour masquer des fichiers spécifiques. La seule chose que vous pouvez faire est d'utiliser la balise Filter pour filtrer l'extension de fichier spécifiée à des fins d'enregistrement, mais pas pour la masquer.
Pas hors de la boîte, non. Jetez un œil à ce post - vous devrez écrire un OpenFileDialog personnalisé. La raison est, comme mentionné dans l'article également, qu'un utilisateur peut utiliser un
.lnk
pour naviguer vers un autre dossier.@nilsK ty, pouvez-vous poster ça comme réponse? alors je le marque correct?