[Tips][SaveFileDialog] ダイアログの表示と入力されたファイル名の取得

SaveFileFialogは、保存するファイル名を指定できるダイアログです。

このダイアログを表示するにはShowDialogメソッドを使用します。

ShowDialogメソッドは、ユーザーがファイル名を入力して[保存]ボタンを押すとWindows.Forms.DialogResult.OKを返します。

また[保存]ボタンが押されるとFileOkイベントが発生しますので、通常はこのイベントを利用するのが良いでしょう。

ユーザーが入力したファイル名はFileNameプロパティで取得することができます。

実際にはFileNameプロパティは、入力されたファイルのフルパスが格納されるため、ファイル名のみを取り出すにはPathクラスGetFileNameメソッドを利用するなどの工夫が必要です。

下記はSaveFileDialogを表示し入力されたファイル名を取得する例です。

サンプルの画面は下記のようにデザインしました。

VBの例

' [ファイルの保存]ボタンクリック時の処理
Private Sub btnShowSaveDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowSaveDialog.Click
    '★★★ファイル保存ダイアログの表示★★★
    SaveFileDialog1.ShowDialog()
End Sub

' [保存]ボタンが押されたときの処理
Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
    Dim strFileName As String

    '★★★入力されたファイル名を取得★★★
    strFileName = IO.Path.GetFileName(SaveFileDialog1.FileName)

    'ファイル名をテキストボックスに表示
    txtInputFile.Text = strFileName
End Sub

C#の例

' [ファイルの保存]ボタンクリック時の処理
Private Sub btnShowSaveDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowSaveDialog.Click
    '★★★ファイル保存ダイアログの表示★★★
    SaveFileDialog1.ShowDialog()
End Sub

' [保存]ボタンが押されたときの処理
Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
    Dim strFileName As String

    '★★★入力されたファイル名を取得★★★
    strFileName = IO.Path.GetFileName(SaveFileDialog1.FileName)

    'ファイル名をテキストボックスに表示
    txtInputFile.Text = strFileName
End Sub

実行例は下図の通りです。

[Tips][パス操作] 指定したパス文字列から絶対パスを取得する

指定したパス文字列から絶対パスを取得するには、PathクラスGetFullPathメソッドを使用します。GetFullPathメソッドは、現在のディレクトリと現在のボリュームの情報を使用して絶対パス文字列を取得します。

下記は指定したパス文字列から絶対パスを取得する例です。

VBの例

Dim filepath As String = "Test.txt"

'フルパスを取得(現在のディレクトリがC:\WorkだとするとC:\Work\Test.txtを返す)
Console.WriteLine(System.IO.Path.GetFullPath(filepath))

C#の例

string filepath = @"Test.txt";

//フルパスを取得(現在のディレクトリがC:\WorkだとするとC:\Work\Test.txtを返す)
Console.WriteLine(System.IO.Path.GetFullPath(filepath));

[Tips][ファイル操作] ファイルの拡張子を調べる

ファイルの拡張子を調べるには、FileInfoクラスExtensionプロパティを参照します。

下記は、ファイルの拡張子を調べる例です。

VBの例

Dim targetFile As String = "C:\Work\icons.zip"   '対象ファイル
Dim info As New IO.FileInfo(targetFile)

MessageBox.Show("拡張子は" & info.Extension & "です")

C#の例

string targetFile = @"C:\Work\icons.zip";   // 対象ファイル
System.IO.FileInfo info = new System.IO.FileInfo(targetFile);

MessageBox.Show("拡張子は" + info.Extension + "です");