参数配置设计方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参数配置设计方案
参数配置界面为了操作方便,采取如下设计:
1、总的参数界面设计为类似VS中的Properties属性窗口,如下:
2、为了减少添加某个参数配置项就需要书写代码的问题,设计为在数据库中对应的数
据表中添加相应的参数配置项名称类型以及其他必须的值即可,而不需要书写代码;
设计为如下:
(1)、创建一个Parameter表包含ParameterID、ParameterName、ParameterHelpText三个字段;ParameterID为该配置参数的唯一标志,ParameterName 中添加需要配置的参数项,如Bin、Map、Marker等,ParameterHelpText为参数项的详细描述信息如下图所示:
(2)、创建一个Component表包含ComponentID、ComponetName、两个字段;ComponentID为该组件的唯一标志,ComponetName为参数项包含的显示类型,如TextBox、ComboBox、FontDialog等;如下图所示:
(3)、创建一个ParameterConfiguration表包含ConfigurationID、ConfigurationName、ParameterID、ComponentID、 DefaultValue、ComponentItems、ConfigurationHelpText 等字段;ConfigurationID为参数配置项的唯一标志,ConfigurationName为参数配置项的名称,如Bin X Size、Statistics Mode、Font等;ParameterID为该参数配置项所对应的该参数的ID,如ParameterID为1,则表示该参数配置项所对应的参数名为Bin,如为2则表示参数名为Map等,对应的映射关系如上图中的Parameter表所示;ComponentID为该参数配置项所显示的组件ID,如ComponentID为1,则表示该参数配置项所显示的组件为TextBox,如为2则表示参数名为ComboBox等,对应的映射关系如上图中的ParameterComponent表所示;DefaultValue为参数配置项的缺省值;ComponentItems为某些显示的参数配置项中可供选择的项值;如 Symbol Size 当其用ComboBox显示时,有Middle、Max、Min等几项可供用户选择;ConfigurationHelpText为该参数配置项所对应的详细描述信息;ParameterConfiguration表如下图所示
3、为了保存用户修改后的参数配置项的值,在数据库中创建一个
ParameterConfigurationValue表,包含ValueID、ParameterID 、CofigurationID、
Value等四个字段;ValueID为该参数配置项值的唯一标志,ParameterID 、
CofigurationID的含义如上所述,Value为该参数配置项值,该数据表如下所示:
4、为了保存用户修改后的参数配置信息以及减少对数据库的操作次数,采用关闭PropertyGrid窗口界面时一次性保存到的ParameterConfigurationValue表方法;所有参数配置如Bin、Map等配置界面的设置都以目录的形式添加到PropertyGrid中间
5、对于某个参数配置的详细设置以相关的基本的控件形式添加到对应的目录下面
6、对于比较复杂的参数配置,如CellColorSettings等把其作为一个新的窗体,在
PropertyGrid中添加一个Button项,当Click该Button时,创建该窗体对应的参数配置界面如LineColor项右边的按钮一样;
如
6、为了方便客户快速查找到自己想要修改的详细参数配置项,在TooBar上面设计了快
速查找项,只要用户输入正确的参数配置名称即可定位到该参数配置项位置
7、为了方便用户能够快速设置缺省值,在ToolBar上面设计了Set DefaultValue按扭
参数配置项的添加的代码设计如下:
1、逐行的读取Parameter表,根据数据表每行中的字段值,生成参数项的属性目录:
生成目录的代码如下:
var itemCategory = new PropertyCategory(ParameterName,ParameterHelpText);
propertyGrid.CategoryAdd(ParameterID, itemCategory,);
2、逐行的读取ParameterConfiguration表,,根据ComponentID的值在propertyGrid
上面生成不同的Items,伪代码如下:
switch (ComponentID)
{
case 1:
var item1 = new
PropertyItemString(ConfigurationName,"",DefaultValue);
propertyGrid.ItemAdd(ParameterID, ConfigurationID, item1);
break;
case 2:
var item2 = new PropertyItemDropDownList (ConfigurationName, "",
DefaultValue) ;
propertyGrid.ItemAdd(ParameterID, ConfigurationID, item2);
break;
case 3:
var item3 = new PropertyItemBoolean(ConfigurationName, false,
DefaultValue);
propertyGrid.ItemAdd(ParameterID, ConfigurationID, item3);
break;
case 4:
var item4 = new PropertyItemFont(ConfigurationName, null,