This article has been localized into Turkish by the community.
SaveFileDialog Diyaloğu
SaveFileDialog bir dosyayı kaydetmek istediğinizde yerini seçmeniz ve adını vermeniz için size yardımcı olur. Önceki örnekte gördüğümüz OpenFileDialog'a bir kaç fark dışında benzer çalışır ve görünür. Aynı OpenFileDialog'da olduğu gibi SaveFileDialog da genel Windows diyaloglarını kullanır, yani sizin uygulamanızdaki diyalog ile örneğin Notepad uygulamasındaki diyalog aynı olacaktır.
Basit SaveFileDialog örneği
İşe başlamak için SaveFileDialog'un en basit örneği ile başlayalım :
<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);
}
}
}
Gördüğünüz gibi çoğunluk iş bir SaveFileDialog nesnesi üretmek ve onun ShowDialog() metodunu çağırmak. Eğer metod true değer dönerse bize kullanıcının girdiği dosya adı ve yerini path olarak veren FileName özelliğini kullanarak içeriğimizi dosyaya yazıyoruz.
Eğer Save File butonuna basarsanız kullandığınız Windows'a göre değişmekle beraber şuna benzer bir diyalog açılır :
Filtre
İlk örnekte gördüğünüz üzere istediğim dosya adına .txt uzantısını ben elle ekledim, sebebi "Save as type" (Kayıt türü) combo box seçiminin boş olması. Aynı OpenFileDialog'da olduğu gibi bu liste Filter özelliği ile kontrol edilir ve tamamen aynı şekilde kullanılır.
saveFileDialog.Filter = "Text file (*.txt)|*.txt|C# file (*.cs)|*.cs";
Filter özelliği formatı hakkında daha detaylı bilgi için lütfen önceki yazıdaki OpenFileDialog'a bakınız, orada ayrınıtılı anlatıldı.
Yukarıda yazıldığı gibi filtre uygulanmış bir SaveFileDialog şuna benzer görünecektir :
Bu şekil yapınca dosya isimlerini uzantılarını yazmadan yazabilirsiniz - olması gereken dosya ismi uzantısını combo box'tan alacaktır. Bu ayrıca kullanıcıya uygulamanızın ne tür dosyaları desteklediğini gösterir ki bu da önemlidir.
Başlangıç klasörünü belirlemek
SaveFileDialog'un başlangıçta hangi klasörde açılacağını Windows belirler, fakat InitialDirectory özelliğini kullanarak üzerine yazabilirsiniz. Genellikle bu değere kullanıcı tanımlı bir klasör , uygulama klasörü ya da belki son kullanılan klasör değerini girersiniz. Bu değeri path şeklinde bir string olarak şöyle verirsiniz :
saveFileDialog.InitialDirectory = @"c:\temp\";
Eğer Desktop, My Documents ya da Program Files gibi Windows özel klasörlerinden birini kullanmak isterseniz, bunlar kullanılan Windows versiyonu ve oturum açan kullanıcıya göre değişiklik göstereceğinden daha fazla özen göstermek gerekir. Tabi ki .NET framework bu özel dosyaların konumları konusunda size yardımcı olacaktır. Sadece Environment sınıfı ve onun üyelerini kullanarak özel klasörlerle başedebilirsiniz :
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Bu örneğe özel ben Environment klasörünü kullandım, ama SpecialFolder enumerasyonuna bir bakın - bir çok enteresan klasör için path değerleri var. Listenin tamamı için lütfen şu MSDN makalesine bakınız.
Seçenekler
Bu yazıda bahsedilen seçenekler dışında dikkatinizi SaveFileDialog'u ihtiyacınıza göre şekillendirebileceğiniz aşağıdaki seçeneklere de çekmek istiyorum :
AddExtension - default değeri true'dur ve eğer kullanıcı girmediyse SaveFileDialog dosya adı uzantısını otomatik ekleyecek mi onu belirtir. Dosya uzantısı seçili filtre ile belirlenir, ama bu mümkün değilse DefaultExt özelliğind ebelirtilen değeri alır (eğer verilmişse). Eğer dosyaların uzantı verilmeden de kaydedilebilmesini istiyorsanız bu seçeneği engellemelisiniz.
OverwritePrompt - default değeri true'dur ve eğer SaveFileDialog mevcut bir dosya üstüne kayıt yapmak isterse kullanıcıya var olan dosyanın üzerine yazmak isteyip istemediğini soran bir onaylama mesajı çıkar. Çok özel bazı durumlar dışında bu seçeneği aktif bırakmalısınız.
Title - bu değerin üzerine yazarak diyalog üzerine kendi başlığınızı koyabilirsiniz. Default değeri "Save As" ya da lokal dildeki eşleniğidir, bu özellik ayrıca OpenFileDialog için de geçerlidir.
ValidateNames - default değeri true'dur ve engellenmediği müddetçe kullanıcıyı devam etmeden önce sadece Windows'un geçerli dosya isim formatında bir isim girmeye zorlar.