【VisualStudio】【C#】OpenFileDialog(ファイルを開くダイアログ)でファイル名を取得する 
2017/09/22 Fri [edit]
前回はテキストボックスにドラッグ&ドロップでファイル名を取得できるようにしてみたが、今回は「参照」ボタンを押したとき、「ファイルを開く」ダイアログ(OpenFileDialog)を出して選択する方法をやってみよう。ユーザーによってドラッグ&ドロップを使うかオープンファイルダイアログを使うかはわからないので、両方実装しておくと便利だ。

オープンファイルダイアログを実装するには「OpenFileDialog」クラスを使う。それでは実際にやってみよう。
(※) Visual Studio 2017 / Windows10(x64) で確認
例えばコントロールに図のような名前が付いているとき、テキストボックスの横にある「参照」ボタンを押すと、「ファイルを開く」ダイアログが表示され、ファイルを選択するとテキストボックスにファイル名が入力されるようにしてみよう。そのやり方とコードは以下のようになる。

1.デザイン画面でボタンをダブルクリックまたはプロパティウィンドウのイベント(雷アイコンを押す)で「Click」が空欄ならダブルクリックでイベントハンドラを作成する。

2.生成されたクリックのイベントハンドラ「buttonInput_Click()」(または buttonOutput_Click())にオープンファイルダイアログの表示とファイル名取得のコードを書く。
コードの例は以下を見て欲しい。
●「ファイルを開く」ダイアログでファイル名を取得する
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void buttonInput_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
//TextBoxにファイル名が入力されていた場合、デフォルトの名前とディレクトリとする(無いときは現在のディレクトリ)
string file = textBoxInput.Text.Trim();
if (!string.IsNullOrEmpty(file))
{
dlg.FileName = System.IO.Path.GetFileName(file);
dlg.InitialDirectory = System.IO.Path.GetDirectoryName(file);
}
//拡張子のフィルタを設定する(*.html;*.htm のように複数指定もできる)
dlg.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*";
//dlg.FilterIndex = 2; //2番目のフィルタをデフォルトにする(1~n)
dlg.Title = "ファイルを選択してください"; //ダイアログのタイトル文字
//ダイアログを表示する→「開く」のとき
if (dlg.ShowDialog() == DialogResult.OK)
{
//ファイル名をTextBoxに表示する
textBoxInput.Text = dlg.FileName;
}
}
}
}
ファイルフィルタは説明とフィルタを「|」(パイプ, バーティカルバー)でペアにし、他の拡張子との区切りにも「|」を使う。類似の拡張子を「;」(セミコロン)でまとめることもできる。例えば HTML などの場合は、"HTMLファイル(*.html;*.htm)|*.html;*.htm" のようにすれば良い。
また、今回は簡略のため割愛するが「buttonOutput_Click()」の方も同じようにやればオープンファイルダイアログが簡単に実装できる。コードもメソッドの中身をほぼまるごとコピーすれば良いので(※コントロール名のみ要修正)自分でやってみよう。
このコードに前回の「ドラッグ&ドロップでファイル名を取得」を加えれば、ユーザビリティは高くなる。せっかくの GUI なので、なるべく簡単にファイルを扱えるようにしておいてあげよう(MS-DOS時代は面倒でしたよホント…(笑))。
(関連記事)
【VisualStudio】【C#】ドラッグ&ドロップでファイル名を取得する
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/270-2988f4a0
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |