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

C# Discussion :

Fichier par défaut dans GetOpenFileName


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 708
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 708
    Par défaut Fichier par défaut dans GetOpenFileName
    Bonjour tout le monde,

    Peut-être ai-je loupé un point au sujet des boîtes de dialogue de sélection de fichier.

    Je souhaite que le contenu d'un répertoire soit affiché dans la boîte de dialogue, et qu'un fichier visé apparaisse sélectionné, par une couleur de fond différente des autres fichiers.

    J'ai bien pris soin d'initialiser le répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    ofd.InitialDirectory = Application.UserAppDataPath;
    J'ai pris note qu'indiquer le chemin en chaîne de caractères ne conviendrait pas, et qu'en revanche les répertoires de l'application peuvent convenir.

    Ensuite je m'attends à ce que FileName, initialisé avant ShowDialog(), permette de sélectionner un fichier, mais que je lui passe Name ou FullName, ça n'a pas l'air de lui faire d'effet. Le chemin indiqué apparaît en bas de la boîte de dialogue dans la zone de texte, mais dans la liste de fichiers le fichier n'est pas sélectionné.

    Je m'en suis sorti par le multi-threading, j'attends l'ouverture de la boîte de dialogue, puis par SendKeys.SendWait j'envoie le nombre de tabulations qu'il faut pour arriver sur la liste de fichiers, puis le nom du fichier.

    Ça marche impeccable dans Windows 11 23H2 (10.0.22631.4460), mais il ne faudrait pas que ça pique Microsoft d'ajouter ou retirer un contrôle dans la boîte de dialogue, ou de modifier la réaction au clavier, car alors dans le premier cas le nom de fichier est envoyé ailleurs que dans la liste, dans le deuxième ça donne un résultat imprévisible.

    Je peux alors retoucher le programme, mais on dirait que ça n'est pas une façon très propre de programmer.

    Si ça inspire quelqu'un ...

    ***
    Une autre difficulté apparaît au bout d'un certain nombre d'exécutions.
    L'ordre des fichiers dans la liste est aléatoire. Et du coup le nom de fichier envoyé par simulation de touches n'est pas interprété de la même manière selon l'ordre (les essais ont vu apparaître deux valeurs en alternance).

    Il ne m'apparaît pas que GetOpenFileNames ait une propriété fixant l'ordre de tri ?
    ***
    Sinon, en simulant un clic de souris sur l'entête de la première colonne, ça "tombe en marche" beaucoup plus souvent.
    Pour ça, soit on évite de modifier les largeurs des colonnes, soit on parcourt les contrôles (fenêtres enfants de la boîte de dialogue) pour une fois sur une ListBox évaluer les largeurs de ses colonnes, ce qui est quand même plus de sport. Et encore j'ai travaillé à définition graphique d'écran constante.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 490
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 490
    Par défaut
    Tu as essayé en mettant le nom de fichier suite au chemin dans InitialDirectory?
    Sinon c'est dans la propriété Filter, si tu mets le nom du fichier, ça ne t'affichera que celui-là si il est présent dans le répertoire.
    ça ne va pas le sélectionner dans la boite de dialogue, mais si le fichier est présent dans le répertoire, ça ne posera pas de souci. le FileName de retour utilise ce champ de texte.

    Sinon tu peux essayer de faire ta propre FileDialog en rajoutant la sélection du fichier passé

  3. #3
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 708
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 708
    Par défaut
    Merci,

    Oui, ou je peux le mettre en nom de fichier, même avec des caractères joker, ça marche aussi. Filter est plus souvent utilisé pour les types de fichiers, et on peut en proposer plusieurs, à choisir avec FilterIndex.

    Je préfère que tous les noms de fichiers soient affichés, que le dernier créé selon un modèle de nom soit sélectionné par défaut, mais avec possibilité d'en sélectionner un autre.

    En acceptant que ça tombe à côté de temps en temps j'arrive à avoir ça, mais ça n'a pas vraiment l'air d'être prévu pour, pourtant il me semble qu'à une époque le nom de fichier passé en argument était sélectionné dans la liste, en plus d'être affiché dans la zone de texte.

    Ça a changé d'une version à l'autre ?
    Ou ça dépend d'une option ?
    *
    J'ai un peu commencé à créer une autre boîte de dialogue, et je me dis que peut-être j'ai loupé une option, et du coup ça serait dommage de tout refaire, surtout maintenant que la police de caractères est lisible.
    *
    Le nom de fichier à la suite de InitialDirectory n'a rien donné.

Discussions similaires

  1. selection des fichiers TXT qui commence par SR dans getopenfilename
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2009, 17h04
  2. filtrer des fichier par extention dans un repertoire
    Par tipon20 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 03/11/2008, 21h22
  3. afficher le fichier par defaut dans GtkFileChooserDialog
    Par aladin.b dans le forum GTK+ avec PHP
    Réponses: 0
    Dernier message: 02/08/2008, 15h56
  4. Fichiers par défauts dans TSaveDialog
    Par stroumpf dans le forum Delphi
    Réponses: 3
    Dernier message: 14/06/2006, 17h37
  5. Réponses: 1
    Dernier message: 19/08/2003, 16h11

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