티스토리 뷰
윈도우 응용프로그램에서 파일 열기 혹은 저장을 할 때마다, 여러분은 거의 같은 dialog가 나타납니다.
WPF에서 여러분은 Microsoft.Win32 namepsace에서 표준 DIALOG를 찾을 수 있습니다.
Simple OpenFileDialog example
1 2 3 4 5 6 7 | <DockPanel Margin="10"> <WrapPanel HorizontalAlignment="Center" DockPanel.Dock="Top" Margin="0,0,0,10"> <Button Name="btnOpenFile" Click="btnOpenFile_Click">Open file</Button> </WrapPanel> <TextBox Name="txtEditor" /> </DockPanel> | cs |
1 2 3 4 5 6 7 8 9 10 11 | using System.IO; using Microsoft.Win32; private void btnOpenFile_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); if(openFileDialog.ShowDialog() == true) { txtEditor.Text = File.ReadAllText(openFileDialog.FileName); } } | cs |
ShowDialog()는 nullable boolean 값을 return합니다.
파일을 선택하고 open하면, true를 return합니다.
OpenFileDilog의 FileName 속성을 이용, 선택한 파일의 전체 경로를 가져옵니다.
Filter
파일의 유형을 제한하고자 할 때 사용합니다. 이미지 파일만 올리기 원한다면 jpeg, bmp 등 이미지 확장자만으로 제한합니다.
위 예제 코드 OpenFileDialog openFileDialog = new OpenFileDialog(); 하단에 추가합니다.
1 2 | openFileDialog.Filter = "JPEG files (*.jpeg)|*.jpeg|PNG files (*.png)|*.png|All files (*.*)|*.*"; | cs |
1 | openFileDialog.Filter = "Image files (*.png 혹은 *.jpeg)|*.png;*.jpeg|All files (*.*)|*.*"; | cs |
확장자 사이에 ' ; ' 를 추가하여 여러 가지의 확장자 명을 가질 수 있습니다.
Setting the initial directory
Windows에서 OpenFileDialog의 초기 디렉토리를 결정하지만, InitialDirectory 속성을 사용하여 재정의할 수 있습니다.
1 | openFileDialog.InitialDirectory = "C:\\Users"; | cs |
내 컴퓨터, 내 문서 등과 같은 windows의 특수한 폴더를 이용한다면, windows의 버전 혹은 사용자에 따라 다르기 때문에 특별한 주의가 필요합니다.
Environment class를 사용하여 해결 가능합니다.
1 2 | openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); | cs |
참고 사이트 : https://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx
Multiple files
여러 개의 파일을 선택하려면 Multiselect 속성을 활성화해야합니다.
1 2 3 4 5 6 | <DockPanel Margin="10"> <WrapPanel HorizontalAlignment="Center" DockPanel.Dock="Top" Margin="0,0,0,10"> <Button Name="btnOpenFile" Click="btnOpenFiles_Click">Open files</Button> </WrapPanel> <ListBox Name="lbFiles" /> </DockPanel> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 | private void btnOpenFiles_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Multiselect = true; openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); if (openFileDialog.ShowDialog() == true) { foreach (string filename in openFileDialog.FileNames) lbFiles.Items.Add(System.IO.Path.GetFileName(filename)); } } | cs |
ListBox에 FileNames 속성을 이용, 반복여 추가합니다.
참고로, 파일 작업, IO 작업을 수행할 때는 존재하지 않는 경로 등 관련 문제에 대한 예외를 주의 ㅎ
'C# > WPF' 카테고리의 다른 글
WPF tutorial - The other dialogs (0) | 2017.06.29 |
---|---|
WPF tutorial - The SaveFileDialog (0) | 2017.06.29 |
WPF tutorial - The MessageBox (0) | 2017.06.29 |
WPF tutorial - Implementing a custom WPF Command (0) | 2017.06.29 |
WPF tutorial - Using WPF commands (0) | 2017.06.29 |
- Total
- Today
- Yesterday
- 코딩야학
- FEED
- XAML
- 데이터 바인딩
- Add TapGesture
- 객체
- UIView Animation
- CollectionView
- Cell Animation
- 그래프
- 백준온라인
- DP
- CustomCollectionViewCell
- MVVM
- 문자열
- listview
- 스택
- 타일링
- C++
- Grid
- 백준
- command
- dfs
- BFS
- 생활코딩
- Custom Cell
- BOJ
- Fakebook
- WPF
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |