0

我将文件夹的目录路径存储在 Properties.Settings.Default.Temporary 中,并允许用户使用 PropertyGrid 更改此值和其他设置。

当用户决定重置设置时,我想使用 Properties.Settings.Default.Reset() 将 Properties.Settings.Default.Temporary 更改为 System.IO.Path.GetTempPath() 的值

我知道 System.Configuration.DefaultSettingValueAttribute。像这样的东西:

[global::System.Configuration.DefaultSettingValueAttribute(System.IO.Path.GetTempPath())]

不起作用。

我还阅读了 Storing default value in Application settings (C#),它描述了一个相关问题,但我想知道是否有办法以上述方式解决我的问题。

4

2 回答 2

0

DefaultSettingValueAttribute.Value属性是 a string,因此当使用该值时,您不能传递要调用的函数调用。事实上,没有能力将代码传递给属性:只有文字是可能的。

相反,在您重置设置的应用程序代码中,通过设置和设置您希望在编译时具有不是文字的值(例如,取决于执行环境)。

于 2012-07-26T14:36:41.100 回答
0

我自己有一个解决方法的想法:

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute(null)]
    public string TemporaryDirectory
    {
        get
        {
            if (this["TemporaryDirectory"] == null)
            {
                return System.IO.Path.GetTempPath();
            }
            return ((string)this["TemporaryDirectory"]);
        }
        set
        {
            if (System.IO.Directory.Exists(value) == false)
            {
                throw new System.IO.DirectoryNotFoundException("Directory does not exist.");
            }
            this["TemporaryDirectory"] = value;
        }
    }

我不知道这是否有任何副作用,但到目前为止它似乎有效。很抱歉,我在发布后不久就有了这个想法。我应该再考虑一下这个问题。

于 2012-07-26T15:11:17.817 回答