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;
}
}
}
}
動作確認環境
Windows 8.1 pro 64bit
Filterプロパティ
Filterプロパティを使用することで、ファイル拡張子で表示されるファイルを選択できます。フィルターを選択するドロップダウンリストには、プログラムを作成する際に、表示するテキストを入力する必要があることに注意して下さい。表示するテキストは、他のアプリケーションと統一することでユーザーの利便性が高まると思いますので、同じファイル形式を使用するアプリケーションで使われているテキストに合わせたほうが無難です。
Filterプロパティで使用するテキストの例
- テキスト(*.txt)
- CSV(*.csv)
- TSV(*.tsv)
- HTML文書(*.html)
InitialDirectoryプロパティ
InitialDirectoryプロパティを使用することで、ファイル ダイアログに最初に表示するディレクトリを指定できます。設定フォルダや作業フォルダを指定して、最初から適切なフォルダの内容が表示されている状態にするとアプリケーションの使い勝手が向上します。
開くファイルごとに、それぞれ適切なフォルダを指定することが大切です。
必要に応じて、最後に操作したフォルダを記録して、次に開いたときに、同じフォルダを開く動作にすることも考慮して下さい。
参考サイト
関連ページ
OpenFileDialogで、複数の種類の拡張子フィルタから選択できるようにするには?
ファイル・オープン・ダイアログ、ファイル・セーブ・ダイアログでは、表示されるファイルを拡張子でフィルタリングすることができます。この機能を使うとファイルが探しやすくなります。