Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

[Windows] 「上書き保存」機能を実装する

windows-overwrite-save-00

ここではファイルを上書き保存する機能を実装します。

 

広 告

 

目次

前提条件

動作確認環境

  • Windows10 64bit
  • Visual Studio Express 2015 for Windows Desktop

1. 上書き保存できない場合は機能を無効にする

 

上書き保存はファイル名が決定している時だけ有効となる機能です。そのためファイル名が決定していない場合は、機能を無効(メニューをクリックできないようにする)にします。

 

上書き保存」メニューをクリックできなくするためには、MenuItemFileSave.Enabledfalseを設定します。アプリケーションを起動した時はファイル名が決まっていないため、Form1_Load()メソッドの最後で実行するようにします。

デフォルトで上書き保存機能を無効にする

private void Form1_Load(object sender, EventArgs e) {
  this.Text = ApplicationName;
  // 複数行入力を有効化
  textBox.Multiline = true;
  // 垂直方向スクロールバー表示を有効化
  textBox.ScrollBars = ScrollBars.Vertical;
  // フォーム全体にテキストボックスを表示
  textBox.Dock = DockStyle.Fill;

  // 「名前を付けて保存」ダイアログで「ファイル種類」を選択させる
  SaveFileDialog.Filter = "テキスト文章|*.txt|すべてのファイル|*.*";

  // 「上書き保存」を無効にする
  MenuItemFileSave.Enabled = false;
}

 

 

 

2. 上書き保存機能を実装する

 

ファイルを開いた時とファイル名を付けて保存した時にファイル名は決定されます。

 

ファイルを開く処理を実行するLoadFile()メソッドの最後で「上書き保存」メニューをクリックできるようにさせます。クリックできるようにするためには、MenuItemFileSave.Enabledtrueを設定します。

上書き保存機能を有効にする

private void LoadFile(string value) {
   textBox.Text = System.IO.File.ReadAllText(
           value, Encoding.GetEncoding("Shift_JIS"));
   // ファイル名を保持する
   this.FileName = value;
   // タイトルバーにファイル名を表示する
   this.Text = ApplicationName + " - " + this.FileName;
   // ファイル名が判明したため「上書き保存」を有効にする
   MenuItemFileSave.Enabled = true;
 }

ファイルを保存する処理を実行するSaveFile()メソッドの最後でも「上書き保存」メニューをクリックできるようにさせます。

上書き保存機能を有効にする

private void SaveFile(string value) {
  System.IO.File.WriteAllText(value, textBox.Text,
    Encoding.GetEncoding("Shift_JIS"));
  // ファイル名を保持する
  this.FileName = value;
  // タイトルバーにファイル名を表示する
  this.Text = ApplicationName + " - " + this.FileName;
  // ファイル名が判明したため「上書き保存」を有効にする
  MenuItemFileSave.Enabled = true;
}

 

次にデザインウィンドウで「上書き保存」メニューをダブルクリックして、MenuItemFileSave_Click()メソッドを作成します。「上書き保存」メニューをクリック時の処理には、すでに作成済のSaveFile()メソッドを使用します。

上書き保存機能を実装する

private void MenuItemFileSave_Click(object sender, EventArgs e) {
  SaveFile(this.FileName);
}

上書き保存機能の実装が完了しました。

 

 

 

 

3. プログラムを実行して結果を確認する

 

これまでの手順の実行結果は以下の通りです。

 

windows-overwrite-save-01

デフォルトは「上書き保存」メニューがクリックできないようになっています。

 

 

windows-overwrite-save-00

ファイルを開いたり、ファイル名を付けて保存した後は、「上書き保存」メニューがクリックできるようになっていることが確認できます。「上書き保存」メニューをクリックするとファイルが保存されていることも確認できます。

 

次は「タイトルバーに変更有無を表示する」です。

 

 

 

広 告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です