2013年09月18日

WPFサンプル:OpenFileDialog と SaveFileDialog

   このエントリーをはてなブックマークに追加 Clip to Evernote
OpenFileDialog, SaveFileDialog のサンプルです。

このサンプルは、XAMLではコントロールの配置だけで、あとは、C#側で記述しています。

using System.IO;
using System.Windows;
using Microsoft.Win32;

namespace OpenFileSaveFileDialogSample {
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
        }

        private void buttonOpen_Click(object sender, RoutedEventArgs e) {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.FilterIndex = 1;
            openFileDialog.Filter = "テキスト ファイル(.txt)|*.txt|HTML File(*.html, *.htm)|*.html;*.htm|All Files (*.*)|*.*";
            bool? result = openFileDialog.ShowDialog();
            if (result == true) {
                textBlock1.Text = openFileDialog.FileName;
                using (Stream fileStream = openFileDialog.OpenFile()) {
                    StreamReader sr = new StreamReader(fileStream,true);
                    textBox1.Text = sr.ReadToEnd();
                }
            }
        }

        private void buttonClose_Click(object sender, RoutedEventArgs e) {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.FilterIndex = 1;
            saveFileDialog.Filter = "テキスト ファイル(.txt)|*.txt|HTML File(*.html, *.htm)|*.html;*.htm|All Files (*.*)|*.*";
            bool? result = saveFileDialog.ShowDialog();
            if (result == true) {
                textBlock1.Text = saveFileDialog.SafeFileName;
                using (Stream fileStream = saveFileDialog.OpenFile())
                using (StreamWriter sr = new StreamWriter(fileStream)) {
                    sr.Write(textBox1.Text);
                }
            }
        }
    }
}

OpenFileDialog と SaveFileDialogの2つのクラスは、Microsoft.Win32 名前空間にあり、WindowsFormsで利用できるコンポーネントとは別ものです。

このサンプルでは、OpenFileDialog, SaveFileDialog クラスの、OpenFileメソッドを使い ファイルをオープンしています。

Openボタンが押されると、OpenFileDialogを開き、選ばれたテキストファイルを読み込み その内容を TextBoxに表示しています。

Closeボタンが押されると、SaveFileDialogを開き、指定されたファイルにTextBoxの 内容を書き込んでいます。このクラスは、既存ファイルを選んだときには、上書きするかどうかのダイアログを出してくれます。

OpenSaveDialog1

OpenSaveDialog2

XAMLも一応載せておきます。

<Window x:Class="OpenFileSaveFileDialogSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="36" />
            <RowDefinition Height="30" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Horizontal" >
            <Button Content="Open" Height="23" Margin="5" Name="buttonOpen"
                    Width="80"  Click="buttonOpen_Click" />
            <Button Content="Save" Height="23" HorizontalAlignment="Right"
                    Margin="5" Name="buttonClose" Width="80" Click="buttonClose_Click" />
        </StackPanel>
        <TextBlock Grid.Row="1" Height="23" Margin="5" Name="textBlock1" Text="" />
        <ScrollViewer Grid.Row="2" VerticalAlignment="Stretch" Margin="5,0,5,5"
                      Padding="3" >
            <TextBox Name="textBox1" TextWrapping="Wrap" AcceptsReturn="True" />
        </ScrollViewer>
    </Grid>
</Window>


WPFサンプル・目次


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52334178