Home > C# > WPF > WPFコントロール > ダイアログボックス

オープン・ファイル・ダイアログボックス

最終更新日

C# WPFには、ダイアログ・ボックスが用意されてますが、Formアプリケーションが、System.Windows.Forms名前空間にあるクラスを使うのとは異なり、WPFアプリケーションではs、Microsoft.Win32名前空間にあるクラスを使用します。

概要

オープン・ファイル・ダイアログボックスは、ファイルを開く際、ファイル名を取得するために使用します。

サンプルコード

メインウィンドウのボタンを押すと、OpenFileDialogボックスが開きます。 ファイルを選択すると、メインウィンドウにファイル名がフルパスで表示されます。

[xaml]


<Window x:Class="FileOpenDialog.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="150" Width="200">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="80*"/>
            <RowDefinition Height="40*"/>
        </Grid.RowDefinitions>
        <Button Name="btn0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" 
                Width="170" Height="50" Click="btn0_Click">
            OpenFileDialogを開きます。
        </Button>
        <Label Name="Label01" content="メッセージ" Grid.Row="1" Background="Cornsilk" />

    </Grid>
</Window>
				
メインウィンドウ ダイアログボックス

[xaml.cs]


using System.Windows;

using System.IO;        // ファイル操作で使用する。
using Microsoft.Win32;  // オープンファイル・ダイアログボックスで使用する。


namespace FileOpenDialog
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btn0_Click(object sender, RoutedEventArgs e)
        {
            // イベントで行う処理は、直接記述せず、メソッドにまとめて、そのメソッドを呼び出します。
            msd_OpenFileDialogProcess();
        }

        private void msd_OpenFileDialogProcess()
        {
            // ラベルの内容を消去します。
            Label01.Content = "";
            
            // Configure open file dialog box オープンファイル・ダイアログボックスを設定します。
            OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

            dlg.FileName = "Document"; // Default file name 既定のファイル名
            dlg.DefaultExt = ".txt"; // Default file extension 既定のファイル拡張子
            dlg.Filter = "Text documents (.txt)|*.txt";
            // Filter files by extension 拡張子によってファイルにフィルターをかけます。

            // Show open file dialog box オープンファイル・ダイアログボックスを表示します。
            bool? result = dlg.ShowDialog();

            // Process open file dialog box results オープンファイル・ダイアログボックスの結果を処理します。
            if (result == true)
            {
                // ファイル名を取得します。
                string filename = dlg.FileName;
                // ラベルにファイル名を表示します。
                Label01.Content = filename;
            }

        }
    }
}
				

動作確認環境

Microsoft Visual Studio Express 2013 for Desktop 64bit
Windows 8.1 pro 64bit

Filterプロパティ

Filterプロパティを使用することで、ファイル拡張子で表示されるファイルを選択できます。フィルターを選択するドロップダウンリストには、プログラムを作成する際に、表示するテキストを入力する必要があることに注意して下さい。表示するテキストは、他のアプリケーションと統一することでユーザーの利便性が高まると思いますので、同じファイル形式を使用するアプリケーションで使われているテキストに合わせたほうが無難です。

Filterプロパティで使用するテキストの例

  • テキスト(*.txt)
  • CSV(*.csv)
  • TSV(*.tsv)
  • HTML文書(*.html)

InitialDirectoryプロパティ

InitialDirectoryプロパティを使用することで、ファイル ダイアログに最初に表示するディレクトリを指定できます。設定フォルダや作業フォルダを指定して、最初から適切なフォルダの内容が表示されている状態にするとアプリケーションの使い勝手が向上します。

開くファイルごとに、それぞれ適切なフォルダを指定することが大切です。

必要に応じて、最後に操作したフォルダを記録して、次に開いたときに、同じフォルダを開く動作にすることも考慮して下さい。

参考サイト

関連ページ

OpenFileDialogで、複数の種類の拡張子フィルタから選択できるようにするには?

複数の種類の拡張子フィルタから選択できるようにする

ファイル・オープン・ダイアログ、ファイル・セーブ・ダイアログでは、表示されるファイルを拡張子でフィルタリングすることができます。この機能を使うとファイルが探しやすくなります。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」