0

2 つの .settings ファイルが必要です。1 つは設定のデフォルト値用で、もう 1 つはユーザーの選択用です。2 つの設定ファイルに同じ設定名が含まれていることを望みますが、必ずしも同じ値である必要はありません。

おそらく、ソリューションには 2 つの .settings ファイルは必要ありませんが、私が持っている唯一のアイデアです。

手短に言えば、ユーザーが自分の使用法に不適切な設定を選択した後、デフォルト値に戻すことを選択することをユーザーに提案できるようにしたいと考えています。

編集 :

私はビジュアル スタジオ 2010 を使用しており、それは勝利フォーム プロジェクトにあります。

すべては、ユーザーの選択によってsetting.settingsファイルが変更されたときにデフォルト構成を復元する方法に関するものです(これらのデフォルト構成を保存するにはどうすればよいですか)

4

1 に答える 1

1

各ユーザー設定 (または任意の設定)のオブジェクトは、クラスのコレクションSettingsPropertyを通じて取得できます。次に、プロパティを調べて、デフォルト値 (特定のユーザーに設定される前の値) を取得できます。たとえば、通常、次のようにプロパティにアクセスする場合:PropertiesSettingsDefaultValue

var value = Properties.Settings.Default.MySetting;

次に、次のようにデフォルト値を取得できます。

var defaultValue = Properties.Settings.Default.Properties["MySetting"].DefaultValue;

デフォルト値は、Visual Studio の設定エディターで設定した値です。

アップデート:

デフォルト値を取得する他の方法は知りません。文字列プロパティ名を避けるために、拡張メソッドを記述して、コンパイラでチェックされた式に基づいてデフォルト値を取得できます。

public static class SettingsExtensions
{
    public static T GetSettingDefaultValue<T, T2>(this T2 settings,
        Expression<Func<T2, T>> expression) where T2 : ApplicationSettingsBase
    {
        MemberExpression memberExpr = expression.Body as MemberExpression;
        return (T)settings.Properties[memberExpr.Member.Name].DefaultValue;
    }
}

そして、次のようにデフォルト値を取得します。

var defaultValue = Settings.Default.GetSettingDefaultValue(s => s.MySetting);
于 2013-03-13T14:54:23.800 に答える