2
votes

OpenFileDialog continue d'afficher les fichiers .lnk WPF

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

 exemple d'image a>

Est-il possible de l'empêcher?


2 commentaires

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?


4 Réponses :


-1
votes

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.


1 commentaires

Ty pour vous le temps, j'ai défini les trois propriétés et les raccourcis continuent d'être visibles :(



0
votes

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.


0 commentaires

1
votes

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


0 commentaires

0
votes

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.


0 commentaires