SaveFileDialogクラスを使うことにより、「名前を付けて保存」ダイアログボックスを表示させることができます。
SaveFileDialogクラスの簡単な使い方を以下に示します。ここでは説明のために、ShowDialogメソッドを呼び出す前にいろいろなプロパティを設定していますが、デフォルトでよい場合は必要ありません。
'SaveFileDialogクラスのインスタンスを作成 Dim sfd As New SaveFileDialog() 'はじめのファイル名を指定する 'はじめに「ファイル名」で表示される文字列を指定する sfd.FileName = "新しいファイル.html" 'はじめに表示されるフォルダを指定する '指定しない(空の文字列)の時は、現在のディレクトリが表示される sfd.InitialDirectory = "C:\" '[ファイルの種類]に表示される選択肢を指定する sfd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*" '[ファイルの種類]ではじめに選択されるものを指定する '2番目の「すべてのファイル」が選択されているようにする sfd.FilterIndex = 2 'タイトルを設定する sfd.Title = "保存先のファイルを選択してください" 'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする sfd.RestoreDirectory = True '既に存在するファイル名を指定したとき警告する 'デフォルトでTrueなので指定する必要はない sfd.OverwritePrompt = True '存在しないパスが指定されたとき警告を表示する 'デフォルトでTrueなので指定する必要はない sfd.CheckPathExists = True 'ダイアログを表示する If sfd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき、選択されたファイル名を表示する Console.WriteLine(sfd.FileName) End If
//SaveFileDialogクラスのインスタンスを作成 SaveFileDialog sfd = new SaveFileDialog(); //はじめのファイル名を指定する //はじめに「ファイル名」で表示される文字列を指定する sfd.FileName = "新しいファイル.html"; //はじめに表示されるフォルダを指定する sfd.InitialDirectory = @"C:\"; //[ファイルの種類]に表示される選択肢を指定する //指定しない(空の文字列)の時は、現在のディレクトリが表示される sfd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*"; //[ファイルの種類]ではじめに選択されるものを指定する //2番目の「すべてのファイル」が選択されているようにする sfd.FilterIndex = 2; //タイトルを設定する sfd.Title = "保存先のファイルを選択してください"; //ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする sfd.RestoreDirectory = true; //既に存在するファイル名を指定したとき警告する //デフォルトでTrueなので指定する必要はない sfd.OverwritePrompt = true; //存在しないパスが指定されたとき警告を表示する //デフォルトでTrueなので指定する必要はない sfd.CheckPathExists = true; //ダイアログを表示する if (sfd.ShowDialog() == DialogResult.OK) { //OKボタンがクリックされたとき、選択されたファイル名を表示する Console.WriteLine(sfd.FileName); }
補足:InitialDirectoryプロパティには、「ドキュメント」や「ピクチャ」などのフォルダを指定する機会が多いと思います。このような特殊なフォルダのパスを取得する方法は、「特殊ディレクトリのパスを取得する」で説明しています。
SaveFileDialogクラスでは選択されたファイルのパスだけでなく、そのファイルのStreamも簡単に取得することができます。以下にその例を示します。
'SaveFileDialogクラスのインスタンスを作成 Dim sfd As New SaveFileDialog() 'ダイアログを表示する If sfd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき、 '選択された名前で新しいファイルを作成し、 '読み書きアクセス許可でそのファイルを開く。 '既存のファイルが選択されたときはデータが消える恐れあり。 Dim stream As System.IO.Stream stream = sfd.OpenFile() If Not (stream Is Nothing) Then 'ファイルに書き込む Dim sw As New System.IO.StreamWriter(stream) sw.Write("https://dobon.net") '閉じる sw.Close() stream.Close() End If End If
//SaveFileDialogクラスのインスタンスを作成 SaveFileDialog sfd = new SaveFileDialog(); //ダイアログを表示する if (sfd.ShowDialog() == DialogResult.OK) { //OKボタンがクリックされたとき、 //選択された名前で新しいファイルを作成し、 //読み書きアクセス許可でそのファイルを開く。 //既存のファイルが選択されたときはデータが消える恐れあり。 System.IO.Stream stream; stream = sfd.OpenFile(); if (stream != null) { //ファイルに書き込む System.IO.StreamWriter sw = new System.IO.StreamWriter(stream); sw.Write("https://dobon.net"); //閉じる sw.Close(); stream.Close(); } }