TOC

This article has been localized into Hungarian by the community.

Dialógusablakok:

A SaveFileDialog dialógusablak

A SaveFileDialog segítséget nyújt majd egy hely és egy fájlnév kiválasztásában, amikor szeretnél elmenteni egy fájlt. Nagyon hasonlóan működik, és néz ki az OpenFileDialog-hoz, amit már az előző cikkben is használtunk, egy pár apróbb különbségtől eltekintve. Akárcsak az OpenFileDialog, a SaveFileDialog is egy csomagoló egy általános Windows dialógusablak körül, ami azt jelenti, hogy a felhasználók nagyjából ugyanazt fogják látni, akár a te alkalmazásodból jelenítik azt meg, akár mondjuk a Jegyzettömbből.

Egyszerű SaveFileDialog példa

Hogy belevágjunk, vegyünk egy egyszerű példát a SaveFileDialog használatára:

<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);
		}
	}
}

Amint azt láthatod, főként a SaveFileDialog példányosításáról, és annak ShowDialog() metódusának meghívásáról van szó. Amennyiben a visszatérési érték 'true', a FileName tulajdonságot (ami a kiválasztott elérési utat, valamint a felhasználó által megadott fájlnevet fogja tartalmazni) fogjuk cél elérési útként használni a tartalom kiírásához.

Ha a mentés (save) gombra kattintassz, egy ilyesmi dialógusablakot kell majd láss, attól függően, hogy a Windows mely verzióját használod:

Szűrő

Ahogy azt az első példából is láthatod, a kívánt fájlnévhez manuálisan hozzáadtam egy .txt kiterjesztést, főleg azért, mert a "Save as type" (magyar Windows esetén: "Fájl típusa") combo box üres. Csakúgy mint az OpenFileDialog esetében, ez a doboz a Filter tulajdonságon keresztül vezérelhető, ráadásul pontosan ugyanolyan módon.

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

További információkért a Filter tulajdonság által követelt formátumról, kérlek nézd meg az előző, OpenFileDialog-ról szóló cikket, ahol az részletesen be van mutatva.

Egy, a fent láthatóhoz hasonló szűrővel, az eredményül kapott SaveFileDialog már így fog kinézni:

Ezzel ellátva, már írhatsz be fájlneveket, anélkül, hogy meg kéne add a kiterjesztést - az a szűrő combo box-ban kiválasztott fájltípus alapján lesz meghatározva. Ez emellett azt is jelzi a felhasználónak, hogy mely fájlformátumokat támogatja az alkalmazásod, ami természetesen nagyon fontos.

A kezdeti könyvtár beállítása

A SaveFileDialog által használt kezdőkönyvtár a Windows által kerül meghatározásra, azonban azt az InitialDirectory tulajdonság használatával felülbírálhatod. Az értékét általában egy felhasználó által meghatározott könyvtárra, az alkalmazás könyvtárára vagy esetleg a legutóbb használt könyvtárra fogod állítani. A kívánt elérési utat string formátumban, a következőképp állíthatod be:

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

Amennyiben a speciális Windows könyvtárak egyikét szeretnéd használni, mint például az Asztal, a Dokumentumok vagy a Program Files könyvtár, különös figyelmet kell fordítanod ezek megadására, mivel ezek elérési útja a Windows különböző verziói esetén, valamint az éppen bejelentkezett felhasználótól függően más és más lehet. A .NET keretrendszer azonban segítséget tud nyújtani neked, csak használd az Environment osztályt és annak tagjait, hogy az ilyen speciális könyvtárakkal elbánj.

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

Ebben az esetben lekérem a My Documents (Dokumentumok) könyvtár elérési útját, de nézz csak rá a SpecialFolder enumerációra - sok érdekes elérési úthoz találsz benne értékeket. A teljes listáért, kérlek, nézd meg ezt az MSDN cikket.

Egyéb opciók

Az ebben a cikkben már említetteken kívül, fel szeretném hívni a figyelmed a következő tulajdonságokra, amelyek segítenek majd a SaveFileDialog-ot a saját igényeidhez szabni:

AddExtension - alapértelmezett értéke 'true', és meghatározza, hogy a SaveFileDialog automatikusan hozzáadja-e a kiterjesztést a fájlnevekhez, amennyiben a felhasználó nem teszi ezt meg. A kiterjesztés az éppen kiválasztott szűrő alapján lesz meghatározva, kivéve, ha ez nem lehetséges, amely esetben a DefaultExt tulajdonság értéke kerül használatra (amennyiben az meg van adva). Ha szeretnéd, hogy az alkalmazásod képes legyen kiterjesztés nélküli fájlok elmentésére, le kell tiltanod ezt az opciót.

OverwritePrompt - alapértelmezett értéke 'true', és meghatározza, hogy a SaveFileDialog megerősítést kell-e kérjen, amennyiben egy, a felhasználó által beírt fájlnév egy már létező fájl felülírását eredményezné. Nagyon különleges esetektől eltekintve, ezt az opciót érdemes engedélyezni.

Title - felülírhatod ezt a tulajdonságot, amennyiben szerenél egyedi címet adni a dialógusablakodnak. Alapértelmezett értéke "Save As", vagy annak lokalizált megfelelője (magyar Windows esetén: "Mentés másként"), és ez a tulajdonság az OpenFileDialog esetén is működik.

ValidateNames - alapértelmezett értéke 'true', és, hacsak nincs letiltva, biztosítja, hogy a felhasználó csak érvényes, Windows által elfogadott fájlneveket írhasson be, mielőtt továbbléphetne.


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!