2012年11月20日火曜日

アプリのユーザー設定を保存するプログラム

アプリケーションのユーザー設定を保存する方法はいくつかありますが、
今回は、Visual Studio C# で、[設定] ページ (プロジェクト デザイナー)を利用する方法を紹介

[プロジェクト] メニューの [プロパティ] をクリックし、[設定] タブをクリックする。



ここで、ユーザー設定の保存先の[名前] 等を予め決めておく。


次に、プログラムでは、

Properties.Settings.Default.[名前] が、ユーザー設定の格納場所となる。

設定を呼び出すときは
   this.label1.Text = Properties.Settings.Default.[名前];

設定を格納するときは
    Properties.Settings.Default.[名前] = this.textBox1.Text;

となる。


格納した設定をファイルとして保存するには
   Properties.Settings.Default.Save();

ファイルとして保存して置かないと、アプリ終了時に設定が消えてしまうので
終了前には必ず実行すること。

アプリ起動時のファイルからの読み込みは、自動的に行なわれる。


設定を変更後、保存した設定ファイルの値に戻したい場合
        Properties.Settings.Default.Reload();


設定を既定値([設定] の[値]欄の値 )に戻したい場合
        Properties.Settings.Default.Reset();

この場合、設定ファイルの値もリセットされるので注意

また、Save()、Reload()、Reset() は、設定[名前] ごとに行われるのではなく
すべての設定[名前] に対して行われる。

---------------------------------------
動作確認用にプログラムを作ってみた。

Settings Management                           WinDesktop C# 


[設定] ページ (プロジェクト デザイナー)で、下記を入力
      [名前]         TextSetting1
       [型]      string  
      [スコープ]  ユーザー 
      [値]      初期値


form に label と textBox それと button を3つ配置

      button1 が Save
      button2 が Reload
      button3 が Reset

Form1.cs
====================================================================


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Settings_Management
{
    public partial class Form1 : Form
    {        
        public Form1()
        {
            InitializeComponent();

            // 起動時に保存してある設定を呼び出す
            this.textBox1.Text = Properties.Settings.Default.TextSetting1;


        private void button1_Click(object sender, EventArgs e)
        {
            // 変数に設定した値を、設定ファイルとして保存したい場合
            Properties.Settings.Default.Save();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // 変数の値を設定した後で、現在の設定ファイルの値に戻したい場合
            Properties.Settings.Default.Reload();
            this.textBox1.Text = Properties.Settings.Default.TextSetting1;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            // 既定値に戻したい場合
            Properties.Settings.Default.Reset();
            this.textBox1.Text = Properties.Settings.Default.TextSetting1;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            // 設定の格納
            Properties.Settings.Default.TextSetting1 = this.textBox1.Text;
            this.label1.Text = Properties.Settings.Default.TextSetting1;
        }
    }
}

====================================================================


0 件のコメント:

コメントを投稿