C# 在运行时创建并保持设置值
我使用C#4.0、VS2010和Winforms。 我在基本表单上有一个DevExpress,我想在运行时将其(int)保存在用户配置文件中的派生表单中。 我使用以下代码获取/生成设置属性名称: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
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负责此操作。