Programming Style

メニュー

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

[Windows] ダイアログのキャンセルを考慮する

windows-common-dialog-cancel-00

開く」ダイアログを表示してもユーザは必ず「開く」ボタンを押すわけではありません。「キャンセル」ボタンを押す可能性もあれば、左上の「×」ボタンを押し、処理をキャンセルするかもしれません。ここでは「開く」コモンダイアログがキャンセルされた場合の考慮を実装します。

 

広 告

 

目次

前提条件

動作確認環境

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

1. キャンセルされた場合の考慮を実装する

 

windows-common-dialog-cancel-01

前回作成したダイアログで「キャンセル」ボタンを押すとエラー(例外)が発生します。

 

 

windows-common-dialog-cancel-02

エラーのダイアログは「継続」ボタンを押すと消すことができます。

このエラーは、System.IO.File.ReadAllText()メソッドが「System.ArgumentException」(引数例外)を発生させていることが原因になります。

前回実装したダイアログ表示処理

private void MenuItemFileOpen_Click(object sender, EventArgs e) {
  OpenFileDialog.FileName = "";
  OpenFileDialog.ShowDialog();
  LoadFile(OpenFileDialog.FileName);
}

private void LoadFile(string value) {
  textBox.Text = System.IO.File.ReadAllText(
          value, Encoding.GetEncoding("Shift_JIS"));
}

ダイアログでキャンセルボタンを押されるとOpenFileDialog.FileNameの値に何も設定されないため、そのままLoadFile()メソッドに渡していることがまずいわけです。

LoadFile()メソッドは、「開く」ボタンがクリックされた場合のみ実行されるべきなので、MenuItemFileOpen_Click()メソッドの処理は以下のように修正すべきです。

「キャンセル」ボタンを押されたときを考慮した実装

private void MenuItemFileOpen_Click(object sender, EventArgs e) {
  OpenFileDialog.FileName = "";
  if (DialogResult.OK == OpenFileDialog.ShowDialog()) {
    // 「開く」ボタンがクリックされたとき
    LoadFile(OpenFileDialog.FileName);
  }
}

OpenFileDialog.ShowDialog()メソッドは、「開く」ボタンを押した場合にDialogResult.OKを返します。上記のコードでは、その条件を満たしたときだけLoadFile()メソッドを呼び出しています。

 

以上が、「キャンセル」ボタンが押された場合を考慮した実装の説明になります。

 

 

 

 

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

 

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

 

windows-common-dialog-cancel-01

キャンセル」ボタンを押してもエラーが発生しないことが確認できます。

 

次は「「名前を付けて保存」機能を実装する」です。

 

 

 

広 告

コメントを残す

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