TOC

This article has been localized into Danish by the community.

Dialoger:

SaveFileDialog

SaveFileDialog hjælper dig med at vælge en lokation og et filnavn, når du ønsker at gemme en fil. Det virker og ligner meget OpenFileDialog, som vi bruge i forrige artikel, med et enkelte diskrete forskelle. Lige som OpenFileDialog er SaveFileDialog en indpakning af en fælles Windows dialog, hvilket betyder, at dine brugere vil se stort set den samme dialog uanset om de starter den fra din applikation eller fra Notesblok.

Simpelt SaveFileDialog eksempel

For at komme i gang, så lad os starte med et meget simpelt eksempel på brug af 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);
		}
	}
}

Som du kan se, er det primært omkring instantiering af SaveFileDialog og derefter at kalde ShowDialog() metoden. Hvis den returnerer true, kan vi bruge FileName egenskaben (som vil indeholde den valgte sti såvel som det indtastede filnavn som den sti, vi kan gemme vores indhold.

Hvis du klikker på gem-knappen, vil du se en dialog som denne, afhængig af den version af Windows, du bruger:

Filter

Som du kan se fra det første eksempel, tilføjede jeg manuelt en .txt endelse til mit ønskede filnavn, primært fordi "Save as type" kombinationsboksen er tom. Lige som for OpenFileDialog er denne boks kontrolleret via Filter egenskaben, og den bruges på nøjagtig den samme måde.

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

For flere detaljer om formatet på Filter egenskabe, se venligst den forrige artikel ok OpenFileDialog, hvor den er forklaret i detaljer.

Med et filter som ovenfor, ser den resulterende SaveFileDialog således ud i stedet:

Med dette på plads kan du skrive filnavne uden at angive endelsen - det vil blive hentet fra den valgte filtype i filter-kombinationsboksen i stedet. Det fortæller også hvilke filformater, din applikation understøtter, hvilket selvfølgelig er vigtigt.

Angivelse af startmappe

Den startmappe, som SaveFileDialog bruger, besluttes af Windows, men ved at benytte InitialDirectory egenskaben, kan du overstyre det. Du vil normalt sætte denne værdi til en specifik mappe, applikationsmappen, eller måske den sidste brugte mappe. Du sætter det til en sti i streng-format, som her:

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

Hvis du ønsker at bruge en af de specielle mapper i Windows, f.eks. Skrivebordet, Mine dokumenter eller Programmer mappen, skal du passe på, eftersom disse kan variere mellem forskellige versioner af Windows, og også afhængig af hvilken bruger, der er logget ind. Dog kan .NET frameworket hjælpe dig - du skal bare bruge Environment kalssen og dens medlemmer til at arbejde med specielle mapper:

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

I dette tilfælde henter jeg stien til Mine dokumenter mappen, men kig på SpecialFolder enumerationen - den indeholder værdier for en hel masse interessante stier. For at se en fuld liste, kan du kigge i denne MSDN artikel

Indstillinger

Ud over de indstillinger, der allerede er nævnt i artiklen, vil jeg gøre dig opmærksom på følgende egenskaber, som kan hjælpe dig med at skræddersy SaveFileDialog til dine behov:

AddExtension - står som standard til true og afgør, om SaveFileDialog automatisk skal tilføje en endelse til filnavnet, hvis brugeren udelader den. Endelsen vil være baseret på det valgte filter, med mindre dette ikke er muligt. I det tilfælde vil den falde tilbage til DefaultExt egenskaben (hvis angivet). Hvis du ønsker, at din applikation skal kunne gemme filer uden filendelse, kan du slå denne egenskab fra.

OverwritePrompt - står som standard til true og afgør, om SaveFileDialog skal spørge om bekræftelse, hvis brugeren indtaster et filnavn, som vil resulterer overskrivelse af en eksisterende . Du vil normalt lade denne indstilling være slået til undtagen i meget specielle situationer.

Title - du kan overstyre denne egenskab, hvis du ønsker en brugerdefineret titel på din dialog. Som standard er den "Save As" (oversat efter Windows sprog), og denne egenskab gælder også OpenFileDialog.

ValidateNames - står som standard til true og med mindre den er slået fra, vil den sørge for, at brugeren kun indtaster gyldige Windows filnavne, før brugeren for lov at fortsætte.


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!