[Windows] ファイル名を保持する

「開く」ダイアログでファイルを開いた後、「名前を付けて保存」ダイアログでファイル名が初期入力されていないことは不便です。ここでは、開いたファイル名を記憶させ、「名前を付けて保存」ダイアログ表示時に初期入力させておく実装をします。
広 告
目次
前提条件
- 「「ファイルの種類」プルダウンを表示する」が実施済であること
動作確認環境
- Windows10 64bit
- Visual Studio Express 2015 for Windows Desktop
1. ファイル名を保持する
ここでは「開く」ダイアログで開いたファイル名を記憶し、「名前を付けて保存」ダイアログの初期入力値として設定する実装について説明します。
ファイル名を記憶させるためには、クラスのメンバ変数を利用します。クラスのメンバ変数とは、クラス直下に宣言された変数のことで、クラス内の各メソッドで共通的に扱うことができる変数になります。クラス直下にファイル名を格納するためのメンバ変数を宣言します。
ファイル名を格納するクラスメンバ変数
public partial class Form1 : Form { ... // ファイル名(フルパス) private string FileName = ""; }
「開く」ダイアログを使ってファイルを開いた後、ファイル名を保持させておくためLoadFile()
メソッドでファイルを読み取った後に、ファイル名をFileName
に格納します。
開いたファイル名を保持する
private void LoadFile(string value) { textBox.Text = System.IO.File.ReadAllText(value, Encoding.GetEncoding("Shift_JIS")); // ファイル名を保持する this.FileName = value; }
「名前を付けて保存」ダイアログを使ってファイルを保存した時もファイル名を保持します。SaveFile()
メソッドでファイルを保存した後に、ファイル名をFileName
に格納します。
保存したファイル名を保持する
private void SaveFile(string value) { System.IO.File.WriteAllText(value, textBox.Text, Encoding.GetEncoding("Shift_JIS")); // ファイル名を保持する this.FileName = value; }
保持していたファイル名は、「名前を付けて保存」ダイアログを表示する前に設定するため、MenuItemFileSaveAs_Click()
メソッドの先頭で設定します。FileName
に実際に格納されている値は、フォルダ名を含むフルパスなので、System.IO.Path.GetFileName()
を使ってファイル名を抽出します。
ファイル名を初期入力させておく
private void MenuItemFileSaveAs_Click(object sender, EventArgs e) { // ファイル名を初期入力させておく SaveFileDialog.FileName = System.IO.Path.GetFileName(this.FileName); if (DialogResult.OK == SaveFileDialog.ShowDialog()) { // 「開く」ボタンがクリックされたとき saveFile(SaveFileDialog.FileName); } }
以上が 「名前を付けて保存」ダイアログのファイル名をあらかじめ設定しておく実装になります。
2. プログラムを実行して結果を確認する
これまでの手順の実行結果は以下の通りです。

「開く」メニューから「開く」ダイアログを表示し任意のテキストファイルを選択し「開く」ボタンをクリックします。今回は「test.txt」という名前のテキストファイルを開きます。

「名前を付けて保存」メニューから「名前を付けて保存」ダイアログを表示すると「ファイル名」テキストボックスに「開く」ダイアログで開いたファイル名があらかじめ入力されていることが確認できます。
次は「タイトルバーにファイル名を表示する」です。