30

カスタム グリッド コントロール用に (ユーザー スコープで) 多数のアプリケーション設定があります。それらのほとんどは色の設定です。ユーザーがこれらの色をカスタマイズできるフォームがあり、デフォルトの色設定に戻すためのボタンを追加したいと考えています。デフォルト設定の読み方を教えてください。

例えば:

  1. CellBackgroundColorという名前のユーザー設定がありますProperties.Settings
  2. 設計時に、IDECellBackgroundColorを使用して の値を設定しました。Color.White
  3. ユーザーは私のプログラムでに設定CellBackgroundColorします。Color.Black
  4. で設定を保存しますProperties.Settings.Default.Save()
  5. ユーザーがRestore Default Colorsボタンをクリックします。

さて、Properties.Settings.Default.CellBackgroundColor戻りますColor.Black。に戻るにはどうすればよいColor.Whiteですか?

4

7 に答える 7

42

@ozgur、

Settings.Default.Properties["property"].DefaultValue // initial value from config file

例:

string foo = Settings.Default.Foo; // Foo = "Foo" by default
Settings.Default.Foo = "Boo";
Settings.Default.Save();
string modifiedValue = Settings.Default.Foo; // modifiedValue = "Boo"
string originalValue = Settings.Default.Properties["Foo"].DefaultValue as string; // originalValue = "Foo"
于 2008-09-08T07:55:30.397 に答える
14

「Windows2.0フォームプログラミング」を読んで、私はこの文脈で役立つかもしれないこれらの2つの有用な方法に出くわしました:

ApplicationSettingsBase.Reload

ApplicationSettingsBase.Reset

MSDNから:

リロードはリセットとは対照的で、前者は保存されたアプリケーション設定値の最後のセットをロードし、後者は保存されたデフォルト値をロードします。

したがって、使用法は次のようになります。

Properties.Settings.Default.Reset()
Properties.Settings.Default.Reload()
于 2010-01-22T13:11:05.530 に答える
5

これが必要かどうかはよくわかりません。もっときちんとした方法があるはずです。そうでなければ、誰かがこれが役立つことを願っています。

public static class SettingsPropertyCollectionExtensions
{
    public static T GetDefault<T>(this SettingsPropertyCollection me, string property)
    {
        string val_string = (string)Settings.Default.Properties[property].DefaultValue;

        return (T)Convert.ChangeType(val_string, typeof(T));
    }
}

利用方法;

var setting = Settings.Default.Properties.GetDefault<double>("MySetting");
于 2011-11-22T17:56:35.463 に答える
3

Properties.Settings.Default.Reset()すべての設定を元の値にリセットします。

于 2010-01-29T22:05:04.600 に答える
2

2セットの設定を行うことで、この問題を回避しました。現在の設定に Visual Studio がデフォルトで追加するもの、つまりProperties.Settings.Default. ただし、プロジェクトに別の設定ファイル「プロジェクト->新しい項目の追加->一般->設定ファイル」を追加し、実際のデフォルト値をそこに保存しますProperties.DefaultSettings.Default

次に、設定に書き込むのではなくProperties.DefaultSettings.Default、読み取るだけにします。すべてをデフォルト値に戻すことは、現在の値をデフォルト値に戻す場合にすぎません。

于 2008-09-08T08:50:20.813 に答える
1

Color.White に戻すにはどうすればよいですか?

あなたができる2つの方法:

  • ユーザーが設定を変更する前に、設定のコピーを保存します。
  • ユーザーが変更した設定をキャッシュし、アプリケーションを閉じる前に Properties.Settings に保存します。
于 2008-09-08T07:54:24.817 に答える
1

呼び出すApplicationSettingsBase.Resetと、設定がデフォルト値にリセットされるだけでなく、同時に保存されるという効果があることがわかりました。

私が望んでいた動作は、それらをデフォルト値にリセットすることでしたが、保存することではありませんでした (ユーザーがデフォルト値を気に入らなかった場合、保存されるまで元に戻すことができるようにするため)。

私の目的に適した拡張メソッドを作成しました。

using System;
using System.Configuration;

namespace YourApplication.Extensions
{
    public static class ExtensionsApplicationSettingsBase
    {
        public static void LoadDefaults(this ApplicationSettingsBase that)
        {
            foreach (SettingsProperty settingsProperty in that.Properties)
            {
                that[settingsProperty.Name] =
                    Convert.ChangeType(settingsProperty.DefaultValue,
                                       settingsProperty.PropertyType);
            }
        }
    }
}
于 2013-01-14T02:07:47.843 に答える