IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

OpenFileDialog : Extension du fichier sélectionné parmi les filtres du dialogue?


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 37
    Points : 34
    Points
    34
    Par défaut OpenFileDialog : Extension du fichier sélectionné parmi les filtres du dialogue?
    Bonjour à tous,

    Voilà, dans mon OpenFileDialog je détermine un filtre avec la propriété Filter pour faire en sorte que l'usager puisse sélectionner seulement certains types de fichiers.

    Toutefois il s'avère toujours possible pour l'usager d'inscrire lui-même son filtre dans le textbox du dialogue, par exemple "*.*", pour pouvoir sélectioner un fichier avec une extension autre que parmi celles inscrites dans la propriété Filter.

    J'aimerais faire en sorte de pouvoir aviser l'usager qu'il ne peut pas sélectionner un fichier avec une extension autre que celles contenues dans la propriété Filter. Donc y a-t-il un moyen disons simpliste de pouvoir vérifier que l'extension du fichier sélectionné à partir du dialogue fait parti de celles incluses dans la propriété Filter?

    Merci à l'avance du coup de pouce que vous pourrez m'apporter sur le sujet.

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Je ne sais pas s'il y a un moyen prévu pour.
    Par contre après coup tu peut toujours afficher un message genre "Le fichier sélectionné n'est pas supporté par l'application ZeBestAppOfZeWorld".
    Sinon, c'est si important l'extension d'un fichier ? si c'est un fichier binaire la plus grande assurance que l'on peut avoir c'est avec un header. Si c'est un fichier texte, quelque soit l'extension ça passe ...

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    L'évènement FileOK du FileDialog peut être annulé en faisant e.Cancel = true.
    Le code suivant vérifie que l'extension du fichier sélectionné est autorisée, et refuse la sélection si ce n'est pas le cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
            Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
                If openFileDialog1.ShowDialog() = DialogResult.OK Then
                    MessageBox.Show(openFileDialog1.FileName)
                End If
            End Sub
     
    	Private Sub openFileDialog1_FileOk(ByVal sender As Object, ByVal e As CancelEventArgs)
                Dim extensions As List(Of String) = GetExtensions(openFileDialog1.Filter)
                Dim fi As FileInfo = New FileInfo(openFileDialog1.FileName)
                If Not extensions.Contains(fi.Extension) Then
                    MessageBox.Show("Extension incorrecte")
                    e.Cancel = True
                End If
            End Sub
     
    	Private Function GetExtensions(ByVal filter As String) As List(Of String)
                Dim extensions As List(Of String) = New List(Of String)()
                Dim filters As String() = filter.Split("|"C)
                Dim i As Integer = 0
                For i = 0 To filters.Length - 1
                    i = i + 1 ' on saute la description du filtre
                    If i < filters.Length Then
                        Dim exts As String() = filters(i).Split(";"C)
                        For Each ext As String In exts
                            extensions.Add(ext.Replace("*", ""))
                        Next
                    End If
                Next
                Return extensions
            End Function
    EDIT: il fait des trucs bizarre le convertisseur C# => VB.NET
    Il m'avait converti ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                for (int i = 0; i < filters.Length; i++)
                {
                    i++; //on saute la description du filtre
                    //...
                }
    en ça :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                While i < filters.Length
                    System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1)
                    ' ...
                    System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1)
                End While


  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Ça fonctionne nickel, merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/05/2015, 17h38
  2. [VBA-W] Ajouter les extensions des fichiers
    Par dev81 dans le forum VBA Word
    Réponses: 4
    Dernier message: 02/05/2007, 14h54
  3. Sélectionner tous les fichiers avec l'extension
    Par babarpapa dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/03/2006, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo