47 votes

SaveFileDialog définit le chemin et le type de fichier par défaut ?

J'utilise SaveFileDialog.SaveFile . Comment puis-je l'amener à la lettre de lecteur par défaut (du système d'exploitation) et aussi limiter les options pour qu'elles n'affichent que .BIN comme extension de fichier ?

J'ai essayé de lire les documents sur MSDN mais je suis très novice en la matière et, pour être honnête, je les trouve parfois peu clairs.

7 votes

Aucune de vos questions n'a de sens.

1 votes

Je pense que la première question doit être lue : "Comment savoir sur quelle lettre de lecteur le système d'exploitation est installé ?"

0 votes

C'est vrai Tim Cooper, c'est ce que je voulais dire.

104voto

Mario Points 16720

El SaveFileDialog ne fera pas d'économie du tout. Il ne fait que vous fournir une interface pratique pour afficher la boîte de dialogue d'enregistrement de fichier par défaut de Windows.

  1. Définir la propriété InitialDirectory sur le lecteur que vous souhaitez qu'il affiche un autre défaut. Pensez à d'autres ordinateurs qui pourraient avoir une disposition différente. Par défaut, Windows enregistre le répertoire utilisé la dernière fois et le présente à nouveau.

  2. Cela est géré en dehors du contrôle. Vous devrez vérifier les résultats de la boîte de dialogue, puis effectuer vous-même la sauvegarde (par exemple, écrire un fichier texte ou binaire).

Voici un exemple rapide (il existe d'autres façons de procéder). savefile est un contrôle de type SaveFileDialog

SaveFileDialog savefile = new SaveFileDialog(); 
// set a default file name
savefile.FileName = "unknown.txt";
// set filters - this can be done in properties as well
savefile.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";

if (savefile.ShowDialog() == DialogResult.OK)
{
    using (StreamWriter sw = new StreamWriter(savefile.FileName))
        sw.WriteLine ("Hello World!");
}

0 votes

Je comprends que le SaveFileDLg ne fournira pas la fonctionnalité d'enregistrer mon fichier binaire, j'ai juste besoin de savoir comment trouver le lecteur par défaut et limiter l'option sur mon SaveFileDialog pour montrer seulement .BIN comme extension de fichier.

0 votes

Tout comme votre filtre montré pour le .txt, je n'ai pas trouvé comment faire le mien pour le .bin.

2 votes

Il suffit de le remplacer. Le format est assez simple - il suffit de plusieurs segments de la chaîne "syntaxe" suivante : "display text|filter|" Par exemple, pour vos fichiers bin, vous écrirez : "BIN files|*.bin|" . Le filtre réel peut être n'importe quel masque de fichier que vous utiliseriez avec la commande cmd. dir commande. Pour le limiter, il suffit de fournir UNE description de filtre, mais vous pouvez en ajouter d'autres si vous le souhaitez (jusqu'à 256, je crois).

5voto

adt Points 2727

Environment.GetSystemVariable("%SystemDrive%") ; fournira le lecteur OS installé, et vous pouvez définir des filtres pour savedialog Obtenir le chemin du fichier de la boîte de dialogue d'enregistrement C#

0 votes

Merci, c'est exactement ce dont j'avais besoin, mais comment puis-je limiter le filtre pour ne montrer que les .bin ?

0 votes

Je ne peux pas sélectionner pour marquer votre solution comme la réponse, pas assez de points mais merci beaucoup adt, vous et Mario seuls m'ont compris donc merci :)

2voto

Robin Bennett Points 2982

Voici un exemple qui filtre réellement les fichiers BIN. De plus, Windows veut maintenant que vous enregistriez les fichiers dans les emplacements de l'utilisateur, et non dans les emplacements du système, voici donc un exemple (vous pouvez utiliser intellisense pour parcourir les autres options) :

            var saveFileDialog = new Microsoft.Win32.SaveFileDialog()
            {
                DefaultExt = "*.xml",
                Filter = "BIN Files (*.bin)|*.bin",
                InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            };

            var result = saveFileDialog.ShowDialog();
            if (result != null && result == true)
            {
                // Save the file here
            }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X