TOC

This article has been localized into French by the community.

Dialogs:

Le SaveFileDialog

La SaveFileDialog vous aidera à choisir la localisation et le nom quand vous désirez sauvegarder un fichier. Elle fonctionne et ressemble beaucoup à la boite de dialogue précédemment vue, OpenFileDialog , avec quelques différences subtiles. Tout comme la OpenFileDialog, la SaveFileDialog est une surcouche de la boite de dialogue commune de Windows, ce qui signifie que vos utilisateurs verront à peu près la même boite de dialogue qu'elle soit initiée par votre application ou, par exemple, via le Bloc-Notes.

Exemple simple de SaveFileDialog

Pour démarrer, commençons par un exemple très simple sur l'utilisation de la SaveFileDialog:

<Window x:Class="WpfTutorialSamples.Dialogs.SaveFileDialogSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SaveFileDialogSample" Height="300" Width="300">
    <DockPanel Margin="10">
        <WrapPanel HorizontalAlignment="Center" DockPanel.Dock="Top" Margin="0,0,0,10">
            <Button Name="btnSaveFile" Click="btnSaveFile_Click">Save file</Button>
        </WrapPanel>
        <TextBox Name="txtEditor" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Auto" />
    </DockPanel>
</Window>
using System;
using System.IO;
using System.Windows;
using Microsoft.Win32;

namespace WpfTutorialSamples.Dialogs
{
	public partial class SaveFileDialogSample : Window
	{
		public SaveFileDialogSample()
		{
			InitializeComponent();
		}

		private void btnSaveFile_Click(object sender, RoutedEventArgs e)
		{
			SaveFileDialog saveFileDialog = new SaveFileDialog();
			if(saveFileDialog.ShowDialog() == true)
				File.WriteAllText(saveFileDialog.FileName, txtEditor.Text);
		}
	}
}

Comme vous voyez, on instancie spécialement la SaveFileDialog puis lance la méthode ShowDialog(). Si elle retourne true, on utilise la propriété FileName (qui contiendra le chemin sélectionné ainsi que le nom du fichier saisi par l'utilisateur) comme chemin où écrire votre contenu.

Quand vous cliquez sur le bouton sauvegarder, vous devriez voir une boite de dialogue comme celle-ci, variable selon la version de Windows que vous utilisez:

La propriété Filtre (Filter)

Comme vous pouvez le voir dans le premier exemple, j'ai ajouté manuellement une extension .txt à mon nom de fichier souhaité, principalement parce que la combobox "sauvegarder en type" est vide. Tout comme pour le OpenFileDialog, cette box est contrôlé via la propriété Filter, et c'est aussi utilisé de la même manière

saveFileDialog.Filter = "Text file (*.txt)|*.txt|C# file (*.cs)|*.cs";

Pour plus de détail à propos des format de la propriété filtre, reportez-vous à l'article précédent concernant le OpenFileDialog, tout y est expliqué en détail.

Avec un Filtre comme ci-dessus votre SaveFileDialog se présentera comme suit:

Avec ce Filtre vous pouvez écrire le nom du fichier sans avoir à préciser l'extension - cette dernière sera automatiquement ajouté grâce au filtre sélectionné dans la ComboBox. De plus le Filtre permet d'indiquer à l'utilisateur quels formats sont utilisés et supportés par votre application, ce qui est important.

Sélectionner le répertoire initial

Le répertoire initialement affiché par la SaveDialog est choisi par Windows, mais en utilisant la propriété InitialDirectory , vous pouvez le modifier. Il est courant de spécifier, un répertoire lié au compte utilisateur, le répertoire de l'application ou juste le dernier répertoire utilisé. Vous pouvez la définir à l'aide d'un "string" au format suivant :

saveFileDialog.InitialDirectory = @"c:\temp\";

Si vous souhaitez utiliser un des répertoires spéciaux de Windows, i.e Bureau, Mes Documents ou le dossier Program File Vous devez prendre certaine précaution étant donné qu'il existe des variations en fonction de la version de Windows et de l'utilisateur de l'ordinateur. Le .NET framework peut vous aidez en ce sens, il vous suffit d'utiliser la classe Environment ainsi que ces membres pour vous en sortir :

saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

Dans cet exemple, je récupère le chemin d'accès de "Mes documents", mais regardez les autre possibilité offertes par l'enum "SpecialFolder" - Il contient des informations pour d'autres chemins intéressants. Pour une liste complète, vous pouvez vous référer à cet article de MSDN.

Options

A la suite des options mentionné précédemment dans cet article, Je vais attiré attiré votre attention sur les propriétés suivantes, qui pourrait vous aidez à paramétrer la boite de dialogue SaveFileDialog à votre convenance.

AddExtension - Par défaut sur Vraie ce paramètre détermine si la SaveFileDialog doit ajouter automatiquement une extension au nom de fichier si l'utilisateur ne le fait pas. L'extension est définie sur le type choisi dans la "Combobox" associée, si cela est possible, sinon il se reportera à la propriété DefaultExt (si spécifiée). Si vous souhaitez que votre application puisse sauvegarder un fichier sans extension, vous pouvez désactiver ces options.

OverwritePrompt - Par défaut sur Vraie, ce paramètre détermine si la boite de dialogue SaveFileDialog doit demander une confirmation lors de l'enregistrement si un fichier de même nom existe déjà dans le répertoire cible et que l'on doit le remplacer. Vous devriez normalement laisser cette option active dans la plupart des cas.

Title - Vous devrez redéfinir cet propriété si vous souhaitez mettre un titre personnaliser à votre boite de dialogue. Par défaut le titre est "Enregistrer sous" ou autre équivalent suivant la langue. Cet propriété est aussi valide pour la OpenFileDialog.

ValidateNames - Par défaut sur Vraie et sinon désactivé, ce paramètre permet de s'assurer que le le nom de fichier fourni par l'utilisateur respecte les normes de Windows avant de continuer.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!