C# 在运行时创建并保持设置值

C# 在运行时创建并保持设置值,c#,runtime,persist,C#,Runtime,Persist,我使用C#4.0、VS2010和Winforms。 我在基本表单上有一个DevExpress,我想在运行时将其(int)保存在用户配置文件中的派生表单中。 我使用以下代码获取/生成设置属性名称: string _splitterSettingsName; public string SplitterSettingsName { get { if (string.IsNullOrEmpty(_splitterSettingsName)) _split

我使用C#4.0、VS2010和Winforms。 我在基本表单上有一个DevExpress,我想在运行时将其(int)保存在用户配置文件中的派生表单中。 我使用以下代码获取/生成设置属性名称:

string _splitterSettingsName;
public string SplitterSettingsName {
    get {
        if (string.IsNullOrEmpty(_splitterSettingsName))
            _splitterSettingsName = GetType().Name + "splitterSettings";
        return _splitterSettingsName;
    }
    set { _splitterSettingsName = value; }
}
我需要一个代码来持久化拆分器位置(int值)。
谢谢。

使用内置设置。在visual studio中打开MyProject->Properties->Settings.Settings。创建用户范围(以便在运行时对其进行编辑)设置。 然后,您可以在代码中作为属性访问该设置:

Properties.Default.Settings.MySettingName = _splitterPosition;
反之亦然

更新

正如我在评论中提到的,我建议不要使用动态名称。但是,我将告诉您如何实现动态命名设置。您需要创建一个继承自
System.Configuration.ApplicationSettingsBase
的类,并实现一个方法,该方法采用字符串参数,然后传递给内部索引器。比如:

public sealed class MySettings : ApplicationSettingsBase
{
    public int GetSplitterPos(string splitterName)
    {
        return ((int)(this[splitterName]));
    }
    public void SetSplitterPos(string splitterName, int pos)
    {
        this[splitterName] = pos;
    }
}

拆分器位于基础窗体中,设置属性名称在第一次加载派生窗体时动态生成。持久化代码应进入基础窗体,设置属性名称在派生窗体中动态生成。为什么要动态生成设置名称?特别是对于拆分器控件之类的东西。我强烈建议您手动执行此操作,动态生成名称可能会让您陷入混乱。BaseForm具有生成拆分器设置属性名称(如果还不存在)所需的所有代码,当我创建派生表单时,我不关心持久化,因为BaseForm负责此操作。