This article has been localized into Korean by the community.
SaveFileDialog
SaveFileDialog는 파일을 저장할 때 위치와 파일 이름을 선택에 도움이 됩니다. 이전 장에서 사용한 OpenFileDialog와 비슷하지만 약간의 차이점이 있습니다. OpenFileDialog와 마찬가지로 SaveFileDialog는 일반적인 Windows 대화 상자를 감싸는 래퍼입니다. 즉, 사용자가 당신의 응용 프로그램에서 시작했는지 또는 메모장에서 시작했는지 관계없이 대략 동일한 대화 상자를 볼 수 있습니다.
간단한 SaveFileDialog 예제
시작하기 위해 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);
}
}
}
보시다시피, 대부분 SaveFileDialog을 인스턴스화 한 다음 ShowDialog() 메소드를 호출하는 것입니다. true를 반환하면 내용을 기록 할 경로로 FileName 속성(선택한 경로와 사용자가 입력 한 파일 이름 포함)을 사용합니다.
저장 버튼을 클릭하면 사용중인 Windows 버전에 따른 다음과 같은 대화 상자가 표시됩니다.
Filter
첫 번째 예제에서 알 수 있듯이 "Save as type"콤보 상자가 비어 있기 때문에 원하는 파일 이름에 .txt 확장명을 추가했습니다. OpenFileDialog와 마찬가지로 이 상자는 Filter 속성을 통해 제어되며 정확히 동일한 방식으로 사용됩니다.
saveFileDialog.Filter = "Text file (*.txt)|*.txt|C# file (*.cs)|*.cs";
Filter 속성 형식에 대한 자세한 내용은 OpenFileDialog의 이전 장을 참조하십시오. 여기에서 자세한 내용을 설명합니다.
위와 같은 필터를 사용하면, SaveFileDialog 결과가 다음과 같이 표시됩니다.
그 자리에, 확장명을 지정하지 않고 파일 이름을 쓸 수 있습니다 - 대신 필터 콤보 상자에서 선택한 파일 형식에서 가져옵니다. 이는 또한 사용자에게 응용 프로그램이 지원하는 파일 형식을 알립니다.
초기 디렉토리 설정
SaveFileDialog에서 사용하는 초기 디렉토리는 Windows에서 결정하지만 InitialDirectory 속성을 사용하면 무시할 수 있습니다. 일반적으로 이 값은 사용자가 지정한 디렉토리, 응용 프로그램 디렉토리 또는 마지막으로 사용한 디렉토리로 설정합니다. 다음과 같이 문자열 형식으로 경로에 설정할 수 있습니다.
saveFileDialog.InitialDirectory = @"c:\temp\";
Windows에서 특수 폴더 중 하나를 사용하려는 경우, 예로 Desktop, My Documents 또는 Program Files 디렉토리에 있는 경우 Windows의 각 버전마다 다를 수 있으며 로그인 한 사용자에 따라 다르기 때문에 특별한주의를 기울여야합니다. .NET 프레임 워크는 Environment 클래스 및 특수 폴더를 다루는 멤버를 사용하여 도움이 될 수 있습니다.
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
이 경우에는 My Documents 폴더의 경로를 얻지만 SpecialFolder 열거형에는 많은 흥미로운 경로에 대한 값이 들어 있습니다. 전체 목록은 이 MSDN 문서를 참조하십시오.
옵션
이 장에서 이미 언급 한 옵션 외에도 다음 속성에 주의를 기울여 원하는 대로 SaveFileDialog를 조정하는데 도움이 됩니다.
AddExtension - 기본값은 true이고 사용자가 생략하면 SaveFileDialog가 파일 이름에 확장자를 자동으로 추가 여부를 결정합니다. 확장자는 선택한 필터를 기반으로 하지만 불가능한 경우 DefaultExt 속성 (지정된 경우)으로 돌아갑니다. 응용 프로그램에서 파일 확장자 없이 파일을 저장할 수 있게 하려면 이 옵션을 비활성화해야 합니다.
OverwritePrompt - 이미 존재하는 파일 이름으로 덮어쓰기 전에 대화 상자에서 메시지를 표시하려면 true이고, 그렇지 않으면 false입니다. 기본값은 true입니다. 특별한 경우를 제외하고 일반적으로 이 옵션을 사용 가능 상태로 유지합니다.
Title - 대화 상자에 사용자 정의 title을 원할 경우 이 속성을 덮어 씁니다. 기본값은 "Save As" 또는 현지화 된 동의어이며 이 속성은 OpenFileDialog에도 유효합니다.
ValidateNames - 잘못된 파일 이름이 제공된 경우 경고를 표시하려면 true이고, 그렇지 않으면 false입니다. 기본값은 false입니다. - https://docs.microsoft.com/ko-kr/dotnet/api/microsoft.win32.filedialog.validatenames?view=netframework-4.7.2#Microsoft_Win32_FileDialog_ValidateNames