web-dev-qa-db-fra.com

SaveFileDialog paramètre le chemin et le type de fichier par défaut?

J'utilise SaveFileDialog.SaveFile. Comment obtenir la lettre de lecteur par défaut (système d'exploitation) et limiter les options permettant d'afficher uniquement .BIN comme extension de fichier?

J'ai essayé de lire les documents sur MSDN, mais je suis très novice dans ce domaine et, pour être honnête, je les trouve parfois mal définis.

40
user636438

Le contrôle SaveFileDialog ne fera aucune sauvegarde. Il vous fournit simplement une interface pratique pour afficher la boîte de dialogue de sauvegarde de fichier par défaut de Windows.

1) Définissez la propriété InitialDirectory sur le lecteur sur lequel vous souhaitez afficher un autre paramètre par défaut. Pensez simplement aux 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) qui est géré en dehors du contrôle. Vous devrez vérifier les résultats de la boîte de dialogue, puis sauvegarder vous-même (écrire un fichier texte ou binaire, par exemple).

Juste à titre d’exemple rapide (il existe différentes façons de le faire) .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!");
}
90
Mario

Environment.GetSystemVariable ("% SystemDrive%"); fournira le système d’exploitation installé, et vous pourrez définir les filtres sur savedialog Obtenir le chemin du fichier de la boîte de dialogue de sauvegarde C #

4
adt

Voici un exemple qui filtre les fichiers BIN. De plus, Windows souhaite maintenant que vous enregistriez les fichiers sur les emplacements utilisateur, et non sur les emplacements 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
            }
1
Robin Bennett

Bonne question! Aucune des réponses ne correspondait exactement à ce dont j'avais besoin, c'est donc ce que j'ai proposé.

        // get path to save file
        string fn = DateTime.Now.ToShortDateString() + " " + cbMaterial.SelectedItem.ToString(); //this combobox is my report name
        SaveFileDialog sfd = new SaveFileDialog();
        sfd.FileName = fn.Replace("/","-").Replace(" ","_");
        sfd.Filter = "(*.csv)|*.csv";
        sfd.ShowDialog();
        string path = sfd.FileName;

        //Build the CSV file data as a Comma separated string.
        string csv = string.Empty;

        //Add the Header row for CSV file.
        foreach (DataGridViewColumn column in gvReports.Columns)
        {
            csv += column.HeaderText + ',';
        }

        //Add new line.
        csv += "\r\n";

        //Adding the Rows
        foreach (DataGridViewRow row in gvReports.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                //Add the Data rows.
                csv += cell.Value.ToString().Replace(",", ";") + ',';
            }

            //Add new line.
            csv += "\r\n";
        }

        if (sfd.FileName != null)
        {
            //Exporting to CSV.
            File.WriteAllText(path, csv);
        }
0
FullStackDeveloper