【VisualStudio】【C#】設定の保存と読み込みをする 
2017/09/20 Wed [edit]
大昔には ini ファイルなどにアプリの設定データを保存する機能を自分で実装してたものだが、幸い最近のアプリケーションフレームワークには初めから簡単にアプリのデータなどの保存・読み込みの行える機能が付いていることが多い。せっかくなので前回のコードに現在の状態の保存と読み込みを追加してみよう。具体的に言えば「アプリケーション終了時にテキストボックスの文字列を保存し、次回起動時にその文字列を復帰させる」ようにしてみよう。
アプリの設定データなどを保存するには「Properties.Settings.Default.Save()」を使う。それでは実際にやってみよう。
(※) Visual Studio 2017 / Windows10(x64) で確認
例えばコントロールに図のような名前が付いているとき、「閉じる」ボタンでアプリケーションが終了→テキストボックスの文字列を保存、次回起動時に保存された文字列が読み込まれ復活するようにしよう。その前に、保存用のプロパティを作っておこう。そのやり方とコードは以下のようになる。

●保存用のプロパティを作成
1.メニューから「プロジェクト>XXXのプロパティ」(XXXにはプロジェクトの名前が入る)でアプリケーションのプロパティを開く。

2.「設定」の項目を開き、保存用のプロパティを作成する。とりあえず名前と種類(型)を適当に作る。ここでは「textBoxInput」の文字列用を「InputFile」、「textBoxOutput」の文字列用を「OutputFile」とした(※コントロール名と同じにするのも良い)。

3.デザイン画面でフォーム(Form1)をクリックし、プロパティウィンドウでイベントに切り替え(雷アイコンを押す)、「FormClosing」が空欄だったらダブルクリックでイベントハンドラを作成する(ちなみに実装コードは「Form1.Designer.cs」を開いて「Windows フォームデザイナーで生成されたコード」を展開すれば「this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);」と書かれているのがわかる)。

4.アプリケーション終了のイベントハンドラ「Form1_FormClosing()」にプロパティ保存を、アプリケーション起動時のイベントハンドラ「Form1_Load()」にプロパティ読み込みのコードを書く。
コードの例は以下を見て欲しい。
●プロパティをアプリケーション終了時に保存、起動時に読み込む
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//設定の読み込み
textBoxInput.Text = Properties.Settings.Default.InputFile;
textBoxOutput.Text = Properties.Settings.Default.OutputFile;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//設定の保存
Properties.Settings.Default.InputFile = textBoxInput.Text;
Properties.Settings.Default.OutputFile = textBoxOutput.Text;
Properties.Settings.Default.Save();
}
private void buttonClose_Click(object sender, EventArgs e)
{
Application.Exit(); //アプリ終了(※Form1_FormClosing() も呼び出される)
}
}
}
アプリケーションの終了するには「Environment.Exit()」などもあるが、終了イベント(FormClosing)が発生しないので注意。保存のタイミングは「Properties.Settings.Default.Save()」を呼んだときになるので、ボタンのクリックイベント(Click)で呼び出しても良い。
(関連記事)
【VisualStudio】【C#】コードでアプリケーションを終了する / 終了コードを返す
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/268-29f8e1de
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |