用.NET PropertyGrid控件实现对象动态属性的配置

合集下载

PropertyGrid自定义控件使用详解

PropertyGrid自定义控件使用详解

PropertyGrid⾃定义控件使⽤详解PropertyGrid是⼀个很强⼤的控件,使⽤该控件做属性设置⾯板的⼀个好处就是你只需要专注于代码⽽⽆需关注UI的呈现,PropertyGrid会默认根据变量类型选择合适的控件显⽰。

但是这也带来了⼀个问题,就是控件的使⽤变得不是特别灵活,主要表现在你⽆法根据你的需求很好的选择控件,⽐如当你需要⽤Slider控件来设置int型变量时,PropertyGrid默认的模板选择器是不⽀持的。

⽹上找了许多资料基本都是介绍WinForm的实现⽅式,主要⽤到了IWindowFromService这个接⼝,并未找到合适的适合WPF的Demo,后来在参考了DEVExpress的官⽅Demo之后我做了⼀个基于WPF和DEV 16.2的PropertyGrid Demo,基本实现了上述功能。

为了实现这⼀点,需要⾃定义⼀个DataTemplateSeletor类,这也是本⽂的核⼼代码。

1.创建⼀个CustomPropertyGrid⾃定义控件:<UserControlx:Class="PropertyGridDemo.PropertyGridControl.CustomPropertyGrid"xmlns="/winfx/2006/xaml/presentation"xmlns:x="/winfx/2006/xaml"xmlns:d="/expression/blend/2008"xmlns:dxprg="/winfx/2008/xaml/propertygrid"xmlns:local="clr-namespace:PropertyGridDemo.PropertyGridControl"xmlns:mc="/markup-compatibility/2006"d:DesignHeight="300"d:DesignWidth="300"mc:Ignorable="d"><UserControl.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><!-- 资源字典 --><ResourceDictionary Source="../PropertyGridControl/DynamicallyAssignDataEditorsResources.xaml" /></ResourceDictionary.MergedDictionaries></ResourceDictionary></UserControl.Resources><Grid><!-- PropertyDefinitionStyle:定义属性描述的风格模板 --><!-- PropertyDefinitionTemplateSelector:定义⼀个模板选择器,对应⼀个继承⾃DataTemplateSelector的类 --><!-- PropertyDefinitionsSource:定义⼀个获取数据属性集合的类,对应⼀个⾃定义类(本Demo中对应DataEditorsViewModel) --><dxprg:PropertyGridControlx:Name="PropertyGridControl"Margin="24"DataContextChanged="PropertyGridControl_DataContextChanged"ExpandCategoriesWhenSelectedObjectChanged="True"PropertyDefinitionStyle="{StaticResource DynamicallyAssignDataEditorsPropertyDefinitionStyle}"PropertyDefinitionTemplateSelector="{StaticResource DynamicallyAssignDataEditorsTemplateSelector}"PropertyDefinitionsSource="{Binding Path=Properties, Source={StaticResource DemoDataProvider}}"ShowCategories="True"ShowDescriptionIn="Panel" /></Grid></UserControl>该控件使⽤的资源字典如下:<ResourceDictionaryxmlns="/winfx/2006/xaml/presentation"xmlns:x="/winfx/2006/xaml"xmlns:d="/expression/blend/2008"xmlns:dxe="/winfx/2008/xaml/editors"xmlns:dxg="/winfx/2008/xaml/grid"xmlns:dxprg="/winfx/2008/xaml/propertygrid"xmlns:local="clr-namespace:PropertyGridDemo.PropertyGridControl"xmlns:mc="/markup-compatibility/2006"mc:Ignorable="d"><local:DynamicallyAssignDataEditorsTemplateSelector x:Key="DynamicallyAssignDataEditorsTemplateSelector" /><local:DataEditorsViewModel x:Key="DemoDataProvider" /><DataTemplate x:Key="DescriptionTemplate"><RichTextBoxx:Name="descriptionRichTextBox"MinWidth="150"HorizontalContentAlignment="Stretch"Background="Transparent"BorderThickness="0"IsTabStop="False" /></DataTemplate><DataTemplate x:Key="descriptionTemplate"><RichTextBoxx:Name="descriptionRichTextBox"MinWidth="150"HorizontalContentAlignment="Stretch"Background="Transparent"BorderThickness="0"Foreground="{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource TemplatedParent}}"IsReadOnly="True"IsTabStop="False" /></DataTemplate><!-- 设置控件的全局样式和数据绑定 --><Style x:Key="DynamicallyAssignDataEditorsPropertyDefinitionStyle" TargetType="dxprg:PropertyDefinition"><Setter Property="Path" Value="{Binding Name}" /><!--<Setter Property="Header" Value="{Binding Converter={StaticResource PropertyDescriptorToDisplayNameConverter}}"/>--> <Setter Property="Description" Value="{Binding}" /><Setter Property="DescriptionTemplate" Value="{StaticResource descriptionTemplate}" /></Style><Style x:Key="DescriptionContainerStyle" TargetType="dxprg:PropertyDescriptionPresenterControl"><Setter Property="ShowSelectedRowHeader" Value="False" /><Setter Property="MinHeight" Value="70" /></Style><Style TargetType="Slider"><Setter Property="Margin" Value="2" /></Style><Style TargetType="dxe:ComboBoxEdit"><Setter Property="IsTextEditable" Value="False" /><Setter Property="ApplyItemTemplateToSelectedItem" Value="True" /><Setter Property="Margin" Value="2" /></Style><!-- 测试直接从DataTemplate获取控件 --><DataTemplate x:Key="SliderTemplate" DataType="local:SliderExtend"><!--<dxprg:PropertyDefinition><dxprg:PropertyDefinition.CellTemplate>--><!--<DataTemplate>--><StackPanel x:Name="Root"><SliderMaximum="{Binding Path=Max}"Minimum="{Binding Path=Min}"Value="{Binding Path=Value}" /><TextBlock Text="{Binding Path=Value}" /></StackPanel><!--</DataTemplate>--><!--</dxprg:PropertyDefinition.CellTemplate></dxprg:PropertyDefinition>--></DataTemplate><DataTemplate x:Key="ComboBoxEditItemTemplate" DataType="Tuple"><TextBlockHeight="20"Margin="5,3,0,0"VerticalAlignment="Center"Text="{Binding Item1}" /></DataTemplate></ResourceDictionary>2.编写对应的模板选择类 DynamicallyAssignDataEditorsTemplateSelector:using DevExpress.Xpf.Editors;using DevExpress.Xpf.PropertyGrid;using ponentModel;using System.Reflection;using System.Windows;using System.Windows.Controls;using System.Windows.Data;namespace PropertyGridDemo.PropertyGridControl{public class DynamicallyAssignDataEditorsTemplateSelector : DataTemplateSelector{private PropertyDataContext _propertyDataContext => App.PropertyGridDataContext;/// <summary>/// 当重写在派⽣类中,返回根据⾃定义逻辑的 <see cref="T:System.Windows.DataTemplate" /> 。

Propertyrid所有用法

Propertyrid所有用法

P r o p e r t y G r i d控件简介如果您使用过Microsoft? Visual Basic? 或Microsoft Visual Studio .NET,那么您一定使用过属性浏览器来浏览、查看和编辑一个或多个对象的属性。

.NET 框架PropertyGrid控件是Visual Studio .NET 属性浏览器的核心。

PropertyGrid控件显示对象或类型的属性,并主要通过使用反射来检索项目的属性。

(反射是在运行时提供类型信息的技术。

)下面的屏幕快照显示了PropertyGrid在窗体上的外观。

图1:窗体上的PropertyGridPropertyGrid包含以下部分:•属性•可展开属性•属性类别标题•属性说明•属性编辑器•属性选项卡•命令窗格(显示控件设计器提供的设计器操作)创建PropertyGrid 控件要使用Visual Studio .NET 创建PropertyGrid控件,需要将该控件添加到工具箱中,因为默认情况下并不包含该控件。

在Tools(工具)菜单中,选择Customize Toolbox(自定义工具箱)。

在对话框中选择Framework Components(框架组件)选项卡,然后选择PropertyGrid。

如果您从命令行编译代码,请使用/reference以下代码显示了如何创建PropertyGrid控件并将其添加到窗体中。

ing System;ing System.Drawing;ing ponentModel;4.ing System.Globalization;6.7.{8.9.public OptionsDialog()10.{11.OptionsPropertyGrid = new PropertyGrid();12.OptionsPropertyGrid.Size = new Size(300, 250);13.14.this.Text = "选项对话框";15.}16.[STAThread]17.static void Main()18.{19.Application.Run(new OptionsDialog());20.}21.}何处使用PropertyGrid 控件在应用程序中的很多地方,您都可以使用户与PropertyGrid进行交互,从而获得更丰富的编辑体验。

propertygrid控件扩展--自定义显示属性内容属性名称及分类

propertygrid控件扩展--自定义显示属性内容属性名称及分类

propertygrid控件扩展--自定义显示属性内容属性名称及
分类
PropertyGrid控件扩展--自定义显示属性内容、属性名称及分类
最近做项目时遇到这样一个问题,要用PropertyGrid控件显示object对象的部分属性,其它属性不显示,这种情况该如何处理呢,能过查找资料,发现这样一个接口ICustomTypeDescriptor,PropertyGrid控件通过ICustomTypeDescriptor接口获取显示的属性及其内容,这样一来就可以通过这个接口的GetProperties方法返回我们要显示的属性内容了,这个方法返回的类型是PropertyDescriptor 集合,在通过扩展PropertyDescriptor来实现自定义内容。

CustomProperty类是用来定义自定义属性内容的,包括要显示的名称、编辑的值、分类、说明、编辑器等等,CustomPropertyCollection类是CustomProperty类的集合,继承了ICustomTypeDescriptor接口,当定义完这个集合类后,将其赋给PropertyGrid控件的SelectedObject属性,就可以实现自定义显示属性了。

通过这个方式也可以实现将属性显示名设置为中文或
其它语言。

类图如下:
运行结果如图:
下载:/Files/xuemingfeng/PropertyGridEx.rar
<<转载请注明出处>>
作者:薛.NET
出处:/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

.net PropertyGrid动态生成属性页

.net  PropertyGrid动态生成属性页

对于这几个月的这个项目,一直想做个总结,但是鉴于本人记性之差,总是将这件事想起又忘记,终于在这个月工作的最后几天有了几天的空闲,把这个经验好好的记录下来。

PropertyGrid,.net框架下的一个控件,这是一个软件升级的项目,原来的软件用的是C++,控件用的还是第三方,这次升级到visual studio .net4.0版本,原以为.net的东西用起来不会费劲的,没想到想要实现项目需要的效果还真没那么简单。

由于需要,我这里主要是为了能动态的生成属性页,还要带能动态生成下来菜单,所以今天主要从这方面总结。

首先定义一个属性类://单条属性类publicclass XProp{privatestring theId = "";//属性Id,我的项目中需要,大家可以忽略privatestring theCategory = "";//属性所属类别privatestring theName = "";//属性名称privatebool theReadOnly = false;//属性的只读性,true为只读privatestring theDescription = "";//属性的描述内容privateobject theValue = null;//值private System.Type theType = null;//类型privatebool theBrowsable = true;//显示或隐藏,true为显示TypeConverter theConverter = null;//类型转换publicstring Id{get { return theId; }set { theId = value; }}publicstring Category{get { return theCategory; }set { theCategory = value; }}publicbool ReadOnly{get { return theReadOnly; }set { theReadOnly = value; }}publicstring Name{get { returnthis.theName; }set { this.theName = value; }}publicobject Value{get { returnthis.theValue; }set { this.theValue = value; }}publicstring Description{get { return theDescription; }set { theDescription = value; }}public System.Type ProType{get { return theType; }set { theType = value; }}publicbool Browsable{get { return theBrowsable; }set { theBrowsable = value; }}publicvirtual TypeConverter Converter {get { return theConverter; }set { theConverter = value; }}}我举一个例子:private string strdemo;[DescriptionAttribute("用于举例说明"),CategoryAttribute("公有属性"),DefaultValueAttribute(“测试属性”),ReadOnlyAttribute(false),BrowsableAttribute(true),TypeConverter(typeof(MyComboTypeConvert))]public stringstrDemo{get { return strdemo; }set { strdemo = value; }}这是个写死的属性,那在我的项目中,根据对象的不同,会需要生产不同的属性页,所以需要一个可以动态生成的属性页,将上述这个一般属性定义,利用XProp类,写成:Private XPropnewXpro = new XProp();newXpro.Category =”公有属性”;=”strDemo”;newXpro.Id = "A";newXpro.Description = “用于举例说明”;newXpro.ReadOnly =false;newXpro.Value = “测试属性”;newXpro.ProType = typeof(string);newXpro.Browsable = true;newXpro.Converter = null;这样,一条属性就完成了。

利用Grid的动态属性进行动态设计

利用Grid的动态属性进行动态设计
摘 要: 在运 用 Vs l o r开发数据库应 用 系统时 , 经常需要 用表格 ( Gi 对 象) ia Fx o u P 我们 即 r d 来显 示和操作 多行数 据。文章就如何 利 用 Gi 对 象的动 态属 性来 动 态控制 表格 的 显示 , r d 比如 高亮度显 示 当前记 录行 、 表格 的奇偶行 分别 用不 同的颜 色显 示等等 , 了一 些 将 作
C l s指 定类 名 , 类 对 象 的基 类 , 能 是 Vsa Fx r Ca : s 该 不 i l oP u o
基类 。
编写 Gi 的 It r l n 事件 代码如下 : d i
S I C[ E, E
例 如 : o 1 G i1 e l( ak o r R B(5 , , ) Fr . r .St l BcC l , G 25 0 0 , m d A o
初 步的探讨 。
关键词 :i a Fxm; r Vs l oP Gi u d对象 ; 态属 性 ; 态控 制表格 的显示 动 动 中图分 类号 :P 1 T31 文献标识码 : A 文章编号 :0 4 49 20 )6— 0 7 2 10 —62 I06 0 0 2 —0
C lmn. m miB c C lr E p so ou Dy c a k oo =c x ms i n C lmn. n miF r C lr Ex rs in ou Dy a c oe oo =c p es0
Tp o Wi 山 d
‘aa ̄’ ‘ lr’ s
6 3O 5
cmpr : 设 置 的 属 性 。 P ey要 t
V l : 性的新 值 , a e的数据 类 型 取决 于要 设 置 的属 a e属 u Vl u
性。

(七)Asp.NET的数据绑定控件--GridView控件的使用

(七)Asp.NET的数据绑定控件--GridView控件的使用

(七)的数据绑定控件--GridView控件的使⽤数据绑定的层次结构数据绑定控件将数据以标记的形式呈现给请求数据的浏览器。

常⽤数据绑定控件控件名称说明GridView以表格的⽅式显⽰和编辑数据,数据⽔平重复显⽰,第⼀⾏为表头DetailsView⼀次只能显⽰、编辑、插⼊或删除⼀条记录。

默认情况下,将记录的每个字段显⽰在它⾃⼰的⼀⾏内,字段名在左侧。

与DetailsView控件相似,⼀次也只能显⽰或编辑⼀条记录。

FormView需要给其设定⼀个模板,⽤于进⾏表单设计和详细信息显⽰。

DataList可以根据⽤户指定的格式来显⽰数据(⽐如分列显⽰),这种格式由模板和样式进⾏定义,数据以⾏和列双向显⽰。

Repeater没有包含内置的布局或样式,需要由Web开发者指定所有的⽤于显⽰数据的内部控件和显⽰样式ListView以嵌套容器模板和占位符的⽅式提供灵活的数据显⽰模式⼀、GridView控件是表格控件,所以它将数据以⼆维表的形式展现出来,控件的每⼀⾏即为每条数据,⽽列则为表格中对应的数据列。

我们通过借助数据绑定控件来实现类似表格这样的数据展⽰,其中GridView就是⽤来展⽰列表的数据绑定控件。

使⽤⽅法:1、在Web页⾯中放⼊⼀个GirdView控件放⼊成功后,可以修改⼀些GridView控件的Id:2、切换⾄设计视图,选择“编辑列”可实现对每⼀列的配置:3、选择BoundField,根据数据源的属性配置字段信息,其中DataField为字段名,HeaderText为标题:编辑后,页⾯会⽣成如下代码:4、在服务端通过来读取数据,并进⾏数据绑定显⽰效果如下:5、在本例中,如果要想让性别和是否删除显⽰为中⽂,我们可以采⽤Eval⽅法来在页⾯中进⾏数据绑定,这时就需要配合Grid的模板列⼀起来使⽤了:6、要想让我们的GridView⽀持分页,那么我们需要启⽤相关的分页参数:若要启⽤分页功能,需要将AllowPaging属性设置为true。

C#PropertyGrid使用总结

C#PropertyGrid使用总结

C#PropertyGrid使⽤总结1. 只有public的property能显⽰出来,可以通过BrowsableAttribute来控制是否显⽰,通过CategoryAttribute设置分类,通过DescriptionAttribute设置描述,Attribute可以加在Class上,也可以加在属性上,属性上的Attribute优先级更⾼;2. enum会⾃动使⽤列表框表⽰;3. ⾃带输⼊有效性检查,如int类型输⼊double数值,会弹出提⽰对话框;4. 基本类型Array:增加删除只能通过弹出的集合编辑器,修改可以直接展开,值为null时,可以通过集合编辑器创建;5. 基本类型List:增删改都只能通过集合编辑器,值为null时,能打开集合编辑器,但不能保存结果,所以必须初始化;6. ReadOnlyAttribute设置为true时,显⽰为灰⾊;对List⽆效,可以打开集合编辑器,在集合编辑器内可以进⾏增删改;应⽤于Array时,不能打开集合编辑器,即不能增删,但可以通过展开的⽅式修改Array元素;7. 对象:值显⽰Object.ToString();Class上加了[TypeConverter(typeof(ExpandableObjectConverter))]之后(也可以加在属性上),才能展开编辑,否则显⽰为灰⾊只读;不初始化什么也⼲不了;8. 基类类型派⽣类对象:与普通对象没有区别,[TypeConverter(typeof(ExpandableObjectConverter))]加在基类上即可;9. 对象Array:增加删除只能通过弹出的集合编辑器,修改可以直接展开,值为null时,可以通过集合编辑器创建;10. 对象List:增加删除修改只能通过弹出的集合编辑器,值为null时,能打开集合编辑器,但不能保存结果,所以必须初始化;11. Hashtable和Dictionary能打开集合编辑器,但不能编辑;12. 通过MyDoubleConverter实现Double类型只显⽰⼩数点后两位:public class MyDoubleConverter : DoubleConverter{public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType){if (destinationType == typeof(string)){return string.Format("{0:0.00}", value);}return base.ConvertTo(context, culture, value, destinationType);}}13. 通过TypeConverter实现⽤字符串表⽰对象[TypeConverter(typeof(StudentConverter))]public class Student{public Student(string name, int age){Name = name;Age = age;}public string Name { get; set; }public int Age { get; set; }public static Student FromString(string s){string name = "Default";int age = 0;string[] splits = s.Split(',');if (splits.Length == 2){name = splits[0];int.TryParse(splits[1], out age);}return new Student(name, age);}public override string ToString(){return string.Format("{0},{1}", Name, Age);}}public class StudentConverter : TypeConverter{public override bool CanConvertFrom(ponentModel.ITypeDescriptorContext context, Type sourceType){if (sourceType == typeof(string)){return true;}return base.CanConvertFrom(context, sourceType);}public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value){Student result = null;if ((value as string) != null){result = Student.FromString(value as string);}return result;}public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType){if (destinationType == typeof(string)){return true;}return base.CanConvertTo(context, destinationType);}public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) {if (destinationType == typeof(string)){return value.ToString();}return base.ConvertTo(context, culture, value, destinationType);}}14. 使⽤UITypeEditor实现⽂件或⽬录选择// 需要在项⽬⾥添加引⽤:程序集|框架|System.Design[Editor(typeof(FileNameEditor), typeof(UITypeEditor))]public string FileName { get; set; }[Editor(typeof(FolderNameEditor), typeof(UITypeEditor))]public string FolderName { get; set; }15. 使⽤⾃定义的下拉式编辑界⾯public class MyAddress{public string Province { get; set; }public string City { get; set; }public override string ToString(){return string.Format("{0}-{1}", Province, City);}}public class MyAddressEditor : UITypeEditor{public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context){return UITypeEditorEditStyle.DropDown;}public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value){IWindowsFormsEditorService service = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;if (service != null){service.DropDownControl(new MyEditorControl(value as MyAddress));}return value;}}// 实现两个ComboBox⽤来编辑MyAddress的属性public partial class MyEditorControl : UserControl{private MyAddress _address;public MyEditorControl(MyAddress address){InitializeComponent();_address = address;comboBoxProvince.Text = _address.Province;comboBoxCity.Text = _address.City;}private void comboBoxProvince_SelectedIndexChanged(object sender, EventArgs e){_address.Province = comboBoxProvince.Text;}private void comboBoxCity_SelectedIndexChanged(object sender, EventArgs e){_address.City = comboBoxCity.Text;}}// MyAddress属性声明[Editor(typeof(MyAddressEditor), typeof(UITypeEditor))]public MyAddress Address { get; set; }效果如图:16. 实现弹出式编辑对话框,只要将UserControl改成Form,EditStyle改成Modal,service.DropDownControl改成service.ShowDialog public partial class MyEditorForm : Form{private MyAddress _address;public MyEditorForm(MyAddress address){InitializeComponent();_address = address;comboBoxProvince.Text = _address.Province;comboBoxCity.Text = _address.City;}private void comboBoxProvince_SelectedIndexChanged(object sender, EventArgs e){_address.Province = comboBoxProvince.Text;}private void comboBoxCity_SelectedIndexChanged(object sender, EventArgs e){_address.City = comboBoxCity.Text;}}public class MyAddressEditor : UITypeEditor{public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context){return UITypeEditorEditStyle.Modal;}public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value){IWindowsFormsEditorService service = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;if (service != null){service.ShowDialog(new MyEditorForm(value as MyAddress));}return value;}}17. 密码表⽰:[PasswordPropertyText(true)]18. 动态显⽰/隐藏属性class MyData{public static void SetPropertyAttribute(object obj, string propertyName, Type attrType, string attrField, object value){PropertyDescriptorCollection props = TypeDescriptor.GetProperties(obj);Attribute attr = props[propertyName].Attributes[attrType];FieldInfo field = attrType.GetField(attrField, BindingFlags.Instance | BindingFlags.NonPublic);field.SetValue(attr, value);}private bool _ShowPassword = false;public bool ShowPassword{get { return _ShowPassword; }set{_ShowPassword = value;SetPropertyAttribute(this, "Password", typeof(BrowsableAttribute), "browsable", _ShowPassword); }}[PasswordPropertyText(true)][Browsable(true)]public string Password { get; set; }}public partial class MainFrm : Form{// 不添加PropertyValueChanged事件,不能实现动态显⽰/隐藏private void myData_PropertyValueChanged(object s, PropertyValueChangedEventArgs e){this.myData.SelectedObject = this.myData.SelectedObject;}}19. 提供下拉选项的stringpublic class ListStringConverter : StringConverter{public override bool GetStandardValuesSupported(ITypeDescriptorContext context){return true;}public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context){return new StandardValuesCollection(new string[] { "A", "B" });}public override bool GetStandardValuesExclusive(ITypeDescriptorContext context){return false;}}[TypeConverter(typeof(ListStringConverter))]public string Name { get; set; }。

wpf的低调自定义属性面板PropertyGrid

wpf的低调自定义属性面板PropertyGrid

wpf的低调⾃定义属性⾯板PropertyGrid当没有轮⼦的时候,就⾃⼰制作轮⼦。

前⾔项⽬上的需求,我想需要⽤到这样⼀个跟vs属性编辑⼀样的东西,专业叫法,属性⾯板怎么弄呢?百度⼀下,wpf的PropertyGrid,如下:群上问wpf跟vs属性编辑类似的东西有⼈弄过吗开始为了要体现我的卑微,这⾥要做⼀下说明:刚接触wpf不久(不对,以前也看过这⽅⾯的东西,就是没实际项⽬),刚好两个⽉前,项⽬要⽤wpf弄,然后就开⼲。

很多东西都是边研究边做的。

上⾯那段是我⼀年前写的,本来当时做出来之后就想写个博⽂,没完成,现在把它完成了。

这⾥先介绍⼀个wpf控件库HandyControl,我⼀年前⽤的时候控件还没那么多,现在也有PropertyGrid,具体表现如下:是不是很酷炫,我最近更新才看到的,害,可惜了。

本来想替换掉我写的,但很⿇烦:1.功能 2.现有项⽬布局。

我写的是这样的:跟HandyControl样式⽅⾯差别很⼤,那是因为我把样式Style = null,使⽤的全部原⽣的样式,所以如果你想酷炫,完全可以⾃⼰改,这⾥我只讲这个控件的实现思路。

怎么来?慢慢来。

1.分析这个控件功能:显⽰对象属性,并对其进⾏分类和编辑2.分析控件显⽰布局,可以参考vs的属性⾯板肯定有⼈头⼤,vs属性⾯板那么多功能,哇,烦躁。

有⼈欲求不得,所以烦躁。

简单的讲就是想太多把⼀个东西,⼀件事分成n件事情来做,然后把每步做好,这件事就做好了。

如果很乱,你就写下来。

vs属性⾯板很复杂,那简化⼀下,就展⽰⼀个属性,做成下⾯这样:以上的分析,我们就知道了控件的两个重要的东西,逻辑和布局。

第⼀步:创建测试类public class Test:ViewModelBase{private string _Name;///<summary>/// Name 属性更改通知///</summary>public string Name{get{return _Name;}set{_Name = value;RaisePropertyChanged(() => Name);}}}ViewModelBase只是为了使⽤RaisePropertyChanged触发属性变化,引⽤⾃GalaSoft.MvvmLight既然是编辑对象的属性,那肯定少不了Attribute,所以需要写⼀个描述对象属性的Attribute,如下:///<summary>///可对字段应⽤的 PropertyGrid 特征///</summary>[AttributeUsage(AttributeTargets.All,AllowMultiple = true, Inherited = true)]public class LsPropertyGridAttribute : Attribute{///<summary>///对应的板块///</summary>public string Plate;///<summary>///显⽰名称///</summary>public string ShowName;public LsPropertyGridAttribute(string plate, string showName){TypeName = type;ShowName = showName;}}那测试的类的name属性就可以添加上特征public class Test:ViewModelBase{private string _Name;/// <summary>/// Name 属性更改通知/// </summary>[LsPropertyGrid("内容","名字")]public string Name{get{return _Name;}set{_Name = value;RaisePropertyChanged(() => Name);}}}接下来写PropertyGrid控件,这⾥我继承StackPanel,并且你得有个展⽰的依赖属性,⽤来赋值对象,所以它的类型是object,别问我怎么知道的,问就是掐指⼀算。

propertygrid高级用法

propertygrid高级用法

文章主题:propertygrid高级用法探究在计算机编程领域,propertygrid是一种常见的界面控件,用于显示和编辑对象的属性。

它具有丰富的功能和用法,可以帮助开发人员提高界面的交互性和可定制性。

在本篇文章中,我将从多个角度深入探讨propertygrid的高级用法,帮助读者更好地理解和运用这一控件。

1. propertygrid的概念让我们简单地了解一下propertygrid的概念。

在计算机编程中,propertygrid是一种界面控件,通常用于显示和编辑对象的属性。

它可以显示对象的各种属性,并且允许用户对这些属性进行编辑。

它的主要作用是提供一个可定制的界面,让用户可以方便地对对象的属性进行操作。

2. propertygrid的基本使用接下来,让我们来了解一下propertygrid的基本使用方法。

通常情况下,我们需要将propertygrid控件添加到我们的界面中,并将要显示和编辑的对象绑定到这个控件上。

一旦绑定完成,propertygrid就会自动显示对象的属性,并且允许用户对这些属性进行修改。

这种基本的用法已经可以满足一般的需求,但是在实际的开发中,我们可能需要更多的高级功能来定制propertygrid的行为。

3. propertygrid的高级功能现在让我们深入探讨一些propertygrid的高级功能。

我们可以通过自定义propertygrid的显示方式来定制界面的外观。

通过设置属性的显示顺序、分组和布局,我们可以使界面更加直观和美观。

propertygrid还支持自定义属性的编辑方式。

除了基本的文本框和下拉框,我们还可以使用自定义的编辑器来处理特定类型的属性。

这种灵活的定制功能可以帮助我们处理复杂的需求。

propertygrid还支持事件的处理和扩展。

我们可以通过监听事件来响应用户的操作,并且可以扩展propertygrid的功能,以满足特定的业务需求。

4. 个人观点和理解从我的个人经验来看,propertygrid是一个非常强大和灵活的界面控件。

wpf propertygridcontrol 用法

wpf propertygridcontrol 用法

wpf propertygridcontrol 用法WPF PropertyGridControl 用法WPF(Windows Presentation Foundation)是由微软推出的一种用于创建用户界面的框架。

在WPF中,PropertyGridControl 是一种常用的控件,用于显示对象属性和允许用户编辑属性值。

本文将详细介绍PropertyGridControl 的用法,以帮助读者更好地了解和使用该控件。

一、PropertyGridControl 的基本介绍PropertyGridControl 是一种自定义控件,用于显示对象的属性和允许用户编辑属性值。

它是由控件库中的GridControl 和PropertyGridEditor 组合而成的,因此,其外观和行为与传统的表格视图非常相似。

PropertyGridControl 主要由如下几个部分组成:1. 属性列表区域:显示对象属性的列表,每个属性通常包括属性名称和属性值。

2. 属性值编辑区域:用于编辑属性值的区域,根据属性的类型,可以显示不同的编辑器。

3. 属性描述区域:提供对属性的描述信息,如属性的作用、取值范围等。

4. 搜索区域:允许用户根据关键字搜索属性。

二、PropertyGridControl 的基本用法1. 引用控件库要使用PropertyGridControl,首先需要将控件库引用到项目中。

可以通过NuGet 包管理器或手动添加引用的方式,将控件库添加到项目中。

2. 添加PropertyGridControl 控件在XAML 页面中的合适位置添加PropertyGridControl 控件。

可以使用如下代码示例:<dxprg:PropertyGridControl x:Name="propertyGridControl" />其中,dxprg 是控件库的命名空间。

3. 设置属性数据源将需要显示和编辑的对象赋值给PropertyGridControl 的SelectedObject 属性。

handycontrol propertygrid的用法

handycontrol propertygrid的用法

handycontrol propertygrid的用法HandyControl 中的 PropertyGrid 是一个用于显示和编辑对象属性的控件。

它可以方便地绑定到对象,并自动生成对应的属性编辑器。

以下是 PropertyGrid 控件的用法示例:1. 导入命名空间:```csharpusing HandyControl.Controls;```2. 创建一个对象类,并定义需要进行属性编辑的属性:```csharppublic class Person{public string Name { get; set; }public int Age { get; set; }}```3. 在 XAML 中使用 PropertyGrid 控件,并绑定到对象:```csharp<PropertyGrid x:Name="MyPropertyGrid" />```4. 在代码后台,将对象绑定到 PropertyGrid 控件,并设置属性:```csharpPerson person = new Person(); = "John";person.Age = 25;MyPropertyGrid.SelectedObject = person;```5. 可以通过设置 DisplayAttribute 和 ExpandAttribute 配置属性的显示效果:```csharppublic class Person{[Display(Name = "姓名")][Expand]public string Name { get; set; }[Display(Name = "年龄")]public int Age { get; set; }}```6. 在运行时,可以通过 PropertyGrid 控件直接编辑对象的属性。

handycontrol propertygrid 用法

handycontrol propertygrid 用法

handycontrol propertygrid 用法HandyControl PropertyGrid 用法:完整指南在本文中,我们将一步一步回答关于HandyControl PropertyGrid 控件的使用方法。

我们将从创建一个新的WPF 应用程序开始,到PropertyGrid 的基本特性、属性和事件的介绍,以及如何定制PropertyGrid。

第一步:创建一个新的WPF 应用程序首先,打开Visual Studio,并创建一个新的WPF 应用程序项目。

你可以根据自己的喜好选择适当的项目名称和位置。

第二步:引用HandyControl在新建的项目中,我们需要引用HandyControl 才能使用PropertyGrid 控件。

有两种方法可以引用HandyControl:方法一:使用NuGet 包管理器右击项目,选择“管理NuGet 程序包”,在搜索框里输入“HandyControl”,找到HandyControl 并点击“安装”按钮。

NuGet 将自动下载并添加HandyControl 到项目中。

方法二:手动引用DLL 文件手动引用DLL 文件需要你先下载HandyControl 并解压缩。

然后,在Visual Studio 中,右击项目,选择“添加”-> “现有项”-> 选择解压缩后的DLL 文件,并点击“添加”。

第三步:使用PropertyGrid打开MainWindow.xaml 文件,并将XAML 代码更改如下,以引用PropertyGrid:<Window x:Class="HandyControlDemo.MainWindow"xmlns="xmlns:x="xmlns:hc="clr-namespace:HandyControl.Controls;assembly=Handy Control"Title="HandyControl PropertyGrid Demo" Height="450" Width="800"><Grid><hc:PropertyGrid/></Grid></Window>这样就可以在应用程序窗口中看到一个空的PropertyGrid。

handycontrol中propertygrid用法

handycontrol中propertygrid用法

handycontrol中propertygrid用法HandyControl 是一个强大的自动化控制软件,其中包含了一个PropertyGrid 控件,它允许用户以可视化的方式管理和设置对象的属性。

下面是在HandyControl 中使用PropertyGrid 的示例用法:首先,你需要创建一个PropertyGrid 控件,并将其添加到你的应用程序中。

你可以在Visual Studio 中使用拖放的方式将PropertyGrid 控件添加到你的窗体中。

接下来,你需要将需要管理的对象添加到PropertyGrid 中。

你可以使用AddHandler 函数将对象添加到PropertyGrid 中,如下所示:```c#AddHandler myObject.PropertyChanged, AddressOf MyPropertyChangedHandler```在这个示例中,myObject 是你想要管理的对象,PropertyChanged 是该对象的事件名称,而MyPropertyChangedHandler 是处理该事件的过程。

你需要根据你的实际需求来替换这些名称。

当你的对象属性发生变化时,你需要编写一个处理程序来响应这个事件。

你可以使用以下代码来编写一个处理程序:```c#Private Sub MyPropertyChangedHandler(ByVal source As Object, ByVal e As PropertyChangedEventArgs)' 在这里编写处理程序代码End Sub```在这个处理程序中,你可以根据需要更新PropertyGrid 中的属性值或执行其他操作。

你可以使用e.PropertyName 来获取发生变化的属性名称,并使用相应的代码来更新PropertyGrid 中的属性值。

除了手动添加处理程序之外,你还可以使用设计器来自动生成代码。

在Visual Studio 中,你可以右击PropertyGrid 控件并选择"Properties" 选项来打开属性窗口。

用.NET PropertyGrid控件实现对象动态属性的配置

用.NET PropertyGrid控件实现对象动态属性的配置

用.NET PropertyGrid控件实现对象动态属性的配置
丁浩;赵政文;李振叶
【期刊名称】《微型电脑应用》
【年(卷),期】2005(021)004
【摘要】本文介绍一种利用.NET框架技术及其PropertyGrid控件,实现对象动态属性配置的软件方法.该方法的优点在于能够直观的显示对象属性的动态增加、删除和改变,而不仅仅局限在其属性值的修改上.
【总页数】3页(P58-60)
【作者】丁浩;赵政文;李振叶
【作者单位】西北工业大学软件学院;西北工业大学计算机学院;宁夏医学院附属医院信息中心
【正文语种】中文
【中图分类】TP311
【相关文献】
1.用.NET PropertyGrid控件实现对象动态属性的配置 [J], 李振叶;丁浩;李晓亮
中实现DataGrid控件动态绑定数据的方法 [J], 胡武强
下动态产生控件实现多文件随意上传 [J], 白金牛
4.利用用户对象实现窗口中控件大小的动态调整 [J], 赵学锋;张金隆
5.在VB.NET中实现动态增加控件 [J], 李清霞;冯向科;邓莹
因版权原因,仅展示原文概要,查看原文内容请购买。

属性控件CMFCPropertyGridCtrl简单用法

属性控件CMFCPropertyGridCtrl简单用法

属性控件CMFCPropertyGridCtrl简单⽤法这是我的原创!⽤⼀堆的编辑框下拉框做配置界⾯,很是繁琐,还要对齐排版……⽤这个属性控件 CMFCPropertyGridCtrl 就可以统⼀风格了。

1//初始化2 CMFCPropertyGridCtrl m_propGrid; //属性控件3 m_pPropName = new CMFCPropertyGridProperty(_T("名称"), _T("值"), _T("描述")); //属性项4 m_pPropBuy = new CMFCPropertyGridProperty(_T("占⽐(%)"), (float)0.1, _T("")); //这⾥必须强制指定类型,否则取值会乱5 m_propGrid.AddProperty(m_pPropBuy); //控件中加⼊⼀个属性项6//可以添加的属性有4类7 CMFCPropertyGridProperty8 CMFCPropertyGridColorProperty9 CMFCPropertyGridFileProperty10 CMFCPropertyGridFontProperty1112//添加下拉选项13 prop->AddOption("yes");14 prop->AddOption("no");15 prop->AllowEdit(FALSE);1617//取值18 COleVariant v = m_pPropName->GetValue(); //这回的是这种万⽤值,是union实现的19 CString name;20 name = v.bstrVal; //字符串要这样转21float f = m_pPropBuy->GetValue().fltVal; //⼩数,取值类型要与设置值的类型完全⼀致2223//事件通知24 AFX_WM_PROPERTY_CHANGED //⽤类向导添加这个消息响应,通知来的就是属性项的指针了2526//缺点27对于bool类型,不能显⽰为CheckBox,看起来不好。

C#PropertyGrid所有用法

C#PropertyGrid所有用法

PropertyGrid 控件简介如果您使用过 Microsoft® Visual Basic®或 Microsoft Visual Studio .NET,那么您一定使用过属性浏览器来浏览、查看和编辑一个或多个对象的属性。

.NET 框架PropertyGrid控件是 Visual Studio .NET 属性浏览器的核心。

PropertyGrid控件显示对象或类型的属性,并主要通过使用反射来检索项目的属性。

(反射是在运行时提供类型信息的技术。

)下面的屏幕快照显示了PropertyGrid在窗体上的外观。

图 1:窗体上的 PropertyGridPropertyGrid包含以下部分:∙属性∙可展开属性∙属性类别标题∙属性说明∙属性编辑器∙属性选项卡∙命令窗格(显示控件设计器提供的设计器操作)创建 PropertyGrid 控件要使用 Visual Studio .NET 创建PropertyGrid控件,需要将该控件添加到工具箱中,因为默认情况下并不包含该控件。

在Tools(工具)菜单中,选择Customize Toolbox(自定义工具箱)。

在对话框中选择Framework Components(框架组件)选项卡,然后选择PropertyGrid。

如果您从命令行编译代码,请使用/reference选项并指定 System.Windows.Forms.dll。

以下代码显示了如何创建PropertyGrid控件并将其添加到窗体中。

ing System;ing System.Drawing;ing ponentModel;ing System.Windows.Forms;ing System.Globalization;6.public class OptionsDialog : System.Windows.Forms.Form7.{8.private System.Windows.Forms.PropertyGrid OptionsPropertyGrid;9.public OptionsDialog()10.{11.OptionsPropertyGrid = new PropertyGrid();12.OptionsPropertyGrid.Size = new Size(300, 250);13.this.Controls.Add(OptionsPropertyGrid);14.this.Text = "选项对话框";15.}16.[STAThread]17.static void Main()19.Application.Run(new OptionsDialog());20.}21.}何处使用 PropertyGrid 控件在应用程序中的很多地方,您都可以使用户与PropertyGrid进行交互,从而获得更丰富的编辑体验。

propertygrid控件的用法

propertygrid控件的用法

propertygrid控件的用法PropertyGrid控件是一个用于展示和编辑对象属性的控件,通常用于设计时和运行时的属性浏览和编辑。

使用PropertyGrid控件需要以下步骤:1. 引入命名空间:```csharpusing System.Windows.Forms;using ponentModel;```2. 创建一个PropertyGrid控件对象:```csharpPropertyGrid propertyGrid1 = new PropertyGrid();```3. 设置PropertyGrid控件的显示属性:```csharppropertyGrid1.Dock = DockStyle.Fill; // 设置控件充满整个父容器```4. 设置要展示和编辑的对象:```csharppropertyGrid1.SelectedObject = myObject; // myObject是要展示和编辑的对象```5. 将PropertyGrid控件添加到窗体上:```csharpControls.Add(propertyGrid1);```可以通过一些属性和方法来进一步定制PropertyGrid控件的行为:- 属性:- SelectedObject:设置要显示和编辑的对象。

- SelectedGridItem:获取当前选中的属性。

- ReadOnly:设置控件是否为只读模式。

- HelpVisible:设置是否显示帮助按钮。

- HelpBackColor、HelpForeColor:设置帮助按钮的背景色和前景色。

- ToolbarVisible:设置是否显示工具栏。

- PropertySort:设置属性的排序方式。

- CategoryForeColor、CategorySplitterColor、CategorySplitterWidth:设置分类的前景色、分隔线颜色和宽度。

- 方法:- Refresh():刷新控件以更新属性列表。

C#WinFormPropertyGrid用法

C#WinFormPropertyGrid用法

C#WinFormPropertyGrid⽤法关于C# PropertyGrid的⽤法没有找到,找到⼀个C++的⽤法。

模仿着使⽤了⼀下,感觉挺不错,分享⼀下。

基本⽤法:拖个PropertyGrid,绑定⼀个属性类就⾏了。

⼤⽓象using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace PropertyGridApp{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){propertyGrid1.SelectedObject = new Go();}class Go{private string _Hi = "hi";public string Hi{get { return _Hi; }set { _Hi = Hi; }}}}}它能⾃动识别Go类中的属性,并且⾃动关联。

对属性进⾏分类并加注释:⼤⽓象class Go{private float _TieMu = 5.5f;private string _Rule = "数⼦法";[CategoryAttribute("规则"), DescriptionAttribute("贴⽬")]public float TieMu{get { return _TieMu; }set { _TieMu = TieMu; }}[CategoryAttribute("规则"), DescriptionAttribute("计算法")]public string Rule{get { return _Rule; }set { _Rule = Rule; }}private int _Black = 0;private int _White = 0;[CategoryAttribute("围棋"), DescriptionAttribute("⿊")]public int Black{get { return _Black; }set { _Black = Black; }}[CategoryAttribute("围棋"), DescriptionAttribute("⽩")]public int White{get { return _White; }set { _White = White; }}}使⽤Color类型可以显⽰颜⾊选择下拉框,使⽤Image类型可以显⽰图⽚选择对话框,真强⼤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这 里提 到 的配置 管理 ,不 是 软件 工程 中 的配置
管理 ,而 是指 现在 的 MI 件 .为 了更有 效地适 应 S软
新 修 改“ 理类 ” 代 代码 来满 足需 求 .
下 面将 通 过 定 制一 整 套 辅 助类 来 扩 展 Po e y rp  ̄ G i 控件 的可用性 , r d 实现业务对 象动态属性 的配置 .
来 满 足 整 个 系统 的 可扩 展 性 .
关键 词 :P o et r rp r G i 件 ;动 态属 性 ;属 性 配 置 y d控
中 图 分 类 号 :P l T 3
文 献 标 志 码 : B
1 问题 提 出
如果您使用过 Mi oo i a B s 或 Mirsf c sf V s l ai r t u c coo t Vsa Su i. E ,那 么您 一定 使 用 过属 性 浏览 器 i l tdo N T u 来浏 览 、查看 和编 辑一 个或 多个 对象 的属性 . N T . E Po e y f rp ̄ G d控 件 是 V sa Su i N T属性 浏 览 器 i i l tdo E u . 的核心 … . rp r G i P oet r y d控件显示对 象或类 型的属性 ,
C tgrA tb t 进 行分 组显 示 ,并且通 过指 定各 种 aeoy tiue r
UT pE ir T pC net 类来 允 许ห้องสมุดไป่ตู้用 户 编辑 这 Iye dt 和 yeovrr o e
些 属性 .
这 里所 带来 的 问 题 就 是 使 用 起 来 非 常 的不 灵
活 ,即要 使用 PoetGi rpr r y d控件 ,必须写 一 个 “ 代理 类 ” 把 要显 示 的属性 信息 全部 包含 在该 类 中 , 后 , 然 实例 化该类 , 并将其 赋 给 PoetGi 件 .这对 于 rpr r y d控
用 . E rpry r 控件实现对象 N T P o etG i d 动态属性 的配置
李振 叶 , 丁 浩 李晓 亮 ,
(,宁夏 医 学院 附属 医院 信 息 中心 , 1 宁夏 银 J 7 0 0 ;2 50 4 .西 北 工 业 大 学 软 件 学院 , 西 西 安 陕
不 同客 户 的需 求 或者 企业 业务 环 境 的调整 变化 ,在
系统 安 装或 运行 过程 中 ,都 可能 要进 行一 系列 的重 新设 置 ,将 这 些设 置 系统组 合到 一起 就形 成 了所 谓
2 自定 义类 型描 述 器
在 . E 架类 库 中存在一个 Ss m C mp n n N T框 yt . o o e t e Mo e.C s m y e ecitr 口 .该 接 口允 许 对 d 1Iu t T p D sr o 接 o p
静 态属性 的 配置 当然可 以适 用 ,然 而动 态属 性要 求
并 主要 通过 使 用反射 来 检索项 目的属 性 ( 反射 是在 运行 时提供类 型信息 的技 术 )2. 象动态 属性 的配 [ 对 1
置 主要 是表 现 在对象 的属性 可 以动 态地增 加 、删 除
属性 可 以动 态地改 变 , 于硬 编码 的 “ 对 代理类 ” 定 肯
706 ) 1 05
摘 要 : 了解 决 传 统 MI 为 S软件 配 置 管理 功 能过 于单 一 , 乏 灵 活 性 的 弊 端 , 时又 能 够 满 足 现 实 环境 中复 杂 业 缺 同 务 对 象 间 的 关 系描 述 以及 设 置 问题 , 绍 一种 利 用 , E 介 N T框 架技 术 及 其 Poet r 控 件 , r r Gi p y d 实现 对 象 动 态属 性 配 置 的软 件 方 法 ,该 方 法 的优 点 在 于能 够 直 观 地 显 示 对 象 属 性 的 动 态 增加 、 除 和 改 变 ,而 不 仅仅 局 限在 其属 性 删 值 的修 改 上 .利 用该 方 法 可 以 实现 软 件 程 序 从 数 据 库 中动 态 获取 或 设 置 的对 象属 性 , 且 通 过 属 性 的 动 态 配 置 并
的配 置 管 理 .如果 想 利 用 PoetGi 件 的强 大 rpr r y d控
属 性显 示 及配 置功 能来 实 现业务 对 象 的动态 配置 管 理, 就要 标 志 Po e y r rp r G i 件显 示 的 内容 , 以必 t d控 所 须 将 S lc d bet S l td bet 件 属 性 设 e t O jc 或 ee e O jcs控 ee c
象 提 供有关 自身 的类 型信 息 , 常 , 通 当对象 需要 动态 类 型信息 时使用此接 口 [.简而言之 , 接 口可 以定 2 1 该 制 对 象属性 在 Poet r 控件 中的显示 信 息及 其 rpr G i y d
是 很 难 办 到 的 . 设 有一 个拥 有 2 0条 属性 记 录的 假 0 数 据库 , 了在 PoetG i 为 rp r r y d控件 中显示 , 就需要 在
或 改变 ,而不 仅仅 局 限在其 属性 值 的变化 上 .利 用 该 技 术可 以很 好解 决传 统 MI S软件 配置 管 理功能 过
于单 一 , 缺乏 灵 活性 的弊 端 , 同时又 能够满 足 现实环 境 中复杂业务对象 间的关 系描述 以及设 置问题 .
“ 理类 ”中手工 创建 20条属性 代 码 , 代 0 即使拥 有先 进 代码 自动化 生成工 具 ,也会 导 致运行 时 代码 膨胀
问题 ; 而且 , 一旦 数据 库记 录增 加 的话 , 只能通 过重
维普资讯
第5 第3 卷 期
20 0 6年 9 月
宁 夏 工 程 技 术
Ni g i Engn e i g Te h o o y n xa ie rn c n lg
V0 . No 3 15 . S p. 2 0 e 06
文 章 编 号 :6 1 2 4 2 0 )3— 2 1 0 17 —7 4 (0 6 0 0 7 — 4
相关文档
最新文档