设计时属性:设计时属性相关类型

关于商品属性设计 商品属性设计目录商品属性设计目录 实际需求 简单例举一下 属性名称个数不定 属性表属性值表设计 属性与属性值关系 实际例子 数据库设计 表之间的关系图 拓展属性管理 产品管理总结下,项目中碰到的“商品属性”问题 实际需求 实际需求 现在要做一个产品管理功能, 刚拿到公司的实际产品信息,发现跟以往项目中产品不同。每一类产品基本上除了 品牌、类别是公共的,其它属性名称,个数都不一样。如下:简单例 阅读详情

属性的设计时特性

.NET Framework为控件设计时属性提供了很多丰富的类,这些属性的功能非常灵活,控制范围广泛,比如可以控制该属性在属性窗口中的显示模式,如:是否在属性窗口中显示该属性,也可以指定此属性必须接收值类型描述,按组分类等,也可以控制文本的标记呈现格式等,甚至可以自己定义一个属性类,实现自己想实现的功能。下面讲一下常用的.NET Framework的属性类对控件的支持功能。
Bindable
指定属性是否可以绑定一个有效数据源,通常使用布尔值进行设置。例如:Bindable(true)。如果使用值true标记属性,表示该属性可以绑定一个有效数据源。
Browsable
指定属性是否应该在属性窗口中显示,使用布尔值设置。一般情况下,对于常用的和比较重要的属性设置Browsable为true,否则,设置Browsable为false。
EditorBrowsable
设置属性在编辑器中的可见性,比如设置在智能提示列表不显示或高级用户才可以看到该属性。
Category
指定属性在属性浏览器中进行分组显示的类别。该设计时特性帮助可视化编辑器将属性进行逻辑分组。通常分为:外观(Appearance)、行为(Behavior)、布局(Layout)、数据(Data)、操作(Action)、键盘(Key)和鼠标(Mouse)等。如果您安装的是中文版的IDE,则默认情况下中文分类和英文分类是通用的,即设置成"数据"或"Data"类别是等价的。
Description
设置显示在属性窗口最下面的描述属性功能的文字说明。
DesignOnly
如果此属性设置为true,表示该属性只能在设计期间使用,不能在页面代码中设置其值。
ReadOnly
设置该属性是否为只读状态。如果此特性设置为true,则在属性窗口能看到属性,但不能设置其值。另外,通过在属性语句体中把 set 语句段去掉也可以起到相同的效果。
Themeable
设置该属性是否支持主题特性,默认情况下属性都支持主题。当该属性与界面无关时可以设置其值为false,禁用该属性的主题功能。
DesignerSerializationVisibility
指定属性是否以及如何在代码中序列化,其值为DesignerSerializationVisibility的枚举值,存在3种设置方式:
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)指定序列化程序不应该序列化属性值;
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)指定应该允许序列化程序序列化属性的值;
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)指定序列化程序应该序列化属性的内容,而不是属性本身。此字段为只读。Visible为其默认值。
这里说的序列化是指在IDE中的设计器界面切换到代码视图时,看到的代码标记,或反向切换时把代码标记转化到设计器界面。后面讲复杂属性时会通过示例介绍此属性功能。
NotifyParentProperty
指示当此设计特性应用到的属性的值被修改时将通知其父属性。换言之,如果属性的父属性应该在该属性值被修改时接到通知,则向该属性应用NotifyParentProperty特性。通常使用布尔值进行设置。一般常用于复杂属性,通知转换器更新到父级标记。
ParseChildren
使用该设计特性指示当在页面上以声明方式使用控件时,嵌套在服务器控件标记内的XML元素是应该视为属性还是应视为子控件。通常情况下,包含两种声明方式:
ParseChildren(true)表示将子XML元素作为服务器控件的属性分析;
ParseChildren(bool childrenasProperty, string defaultProperty),其中childrenasProperty和上面的方式中的布尔值参数意义相同,defaultProperty定义默认情况下将子控件分析为服务器控件的集合属性。
PersistChildren
该设计特性指示设计时是否应将服务器控件的子控件作为内部嵌套控件保持。如果该特性为PersistChildren(true),则将服务器控件的子控件作为嵌套服务器控件标记保持。如果为PersistChildren(false),则将该控件的属性作为嵌套元素保持。
PersistenceMode
指定如何将服务器控件属性或事件保持到ASP.NET页面的元数据属性,共存在4种枚举设置方式:
PersistenceMode(PersistenceMode.Attribute)指定属性或事件保持为属性;
PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)指定属性作为服务器控件的唯一内部文本,如果属性值是HTML编码的,只能对字符串作这种指定;
PersistenceMode(PersistenceMode.InnerDefaultProperty)指定属性在服务器控件中保持为内部文本,还指示将该属性定义为元素的默认属性,只能指定一个属性为默认属性;
PersistenceMode(PersistenceMode.InnerProperty)指定属性在服务器控件中保持为嵌套标记,通常用于复杂对象,它们具有自己的持久性属性。
关于以上4种标记的具体用法,下一节会详细介绍。
DefaultValue
指定属性的默认值。此特性的设置需要特别谨慎,假如设置的值不为空,则开发人员在使用时如果自己输入的值与默认值相同,则控件不会装载开发人员输入的值。也就是说此默认值不能指定为具有有效意义或业务意义的实际值。一般设置为空即可。
DisplayName
指定在属性窗口中显示的别名。此别名仅在属性窗口中看到,当转换器转换到代码视图,以及在页面后面的代码中编码还是以实际的属性名称为准,而不是以该别名为准。
ParenthesizedPropertyName
指定属性在属性窗口中显示时,是否带有括号,相当于在Category分组特性基础上的对属性窗口属性集的排序功能,如果不带括号该属性会自动排在该组的前面。
PasswordPropertyText
指定是否设置成密码文本。如果设置为true,则在属性窗口中输入的文本会用特定的密码符号显示,而不是显示原文本;另外,在代码视图中看到的仍为原文本。
TypeConverter
指定用作此特性所绑定到的对象的转换器的类型。用于转换的类必须从TypeConverter继承。使用ConverterTypeName属性来获取为该特性所绑定到的对象提供数据转换的类名。后面会通过代码示例讲解如何自定义一个自己的类型转换器。
Editor
指定该属性的编辑器,如系统的文件编辑器、文本编辑器、颜色编辑器,还有集合编辑器等,也可以自己实现编辑器,具体用法后面会讲到。
ToolBoxItem
此属性为类特性。属于工具箱属性,可以设置当前控件是否在工具箱中显示,以及所在工具箱项的类型名称等信息。默认生成的控件都显示在工具箱中。
ToolBoxData
此特性为类特性,即不是属性的特性,而是类的特性,设置位置也是在类的上面。ToolBoxData表示从工具箱中拖一个控件到设计界面上时默认显示标记格式,如:
[ToolboxData("<{0}:ControlProperty
runat=server></{0}:ControlProperty>")]
可以修改参数字符串,定制为自己想要的格式,但要保证所添加的属性为有意义的属性。
DefaultProperty
此特性为类特性。它指定服务器控件的默认属性,例如:[DefaultProperty("Text")]。
指定用黑色粗体显示默认属性特性的属性名称。一般设置比较重要或常用的属性为默认的属性。如TextBox控件的Text属性。
DefaultEvent
此特性为类特性。指定服务器控件的默认事件,例如:[DefaultEvent("OnClicked")]。
指定用黑色粗体显示默认事件特性的事件名称。一般设置比较重要或常用的属性为默认的事件,如Button控件的OnClick事件。
ValidationProperty
此特性为类特性,指定该控件的哪个属性作为验证属性。当该控件与验证控件组合使用时,验证控件会自动验证该特性指定的属性。
AspNetHostingPermission
此属性为JIT编译时代码访问安全属性。需要使用此属性确保链接到控件的代码具有适当的安全权限。Control类带有两个JIT编译时代码访问安全属性标记:
AspNetHostingPermission(SecurityAction.Demand,Level=AspNetHostingPermissionLevel.Minimal)和AspNetHostingPermission(SecurityAction.InheritanceDemand,Level=AspNetHosting PermissionLevel.Minimal).在使用时应把第一个属性应用于当前开发的控件,第二个属性是可选的,因为继承请求是可传递的,在派生类中仍有效。
ControlBuilder
分析时特性,将自定义控件生成器与控件关联。只有在您希望使用自定义控件生成器,对页分析器用分析控件的声明性语法的默认逻辑进行修改时,才需要应用此特性。如果仅希望指定控件标记中的内容是否与属性或子控件对应,请使用ParseChildrenAttribute,而不要使用自定义控件生成器。
Designer
设计时特性,指定与控件关联的设计器类。控件设计器类用于控制关联的控件在可视化设计器的设计图面上的外观和行为。
还有一些更复杂的,包括在设计模式下的元数据属性类在这里没有列出,因为在后面有专门的章节详细介绍,通过代码示例更容易理解。在这里只要理解上面这些属性类功能,开发一般的控件是没有问题了。
 

DesignMode属性

自定义控件能够以两种模式执行:设计模式和运行模式。运行模式是指控件在浏览器中运行呈现效果。设计模式是指控件在设计器中呈现的效果,并没有在浏览器中运行。在资源管理器中右击一个*.aspx页面文件,选择"视图设计器"命令,即可进入到控件的设计模式。
设计模式主要是为控件使用者设计的(不是浏览站点的最终用户),能够让控件使用都在设计器中就能够看到控件的展现效果,更便捷的配置控件的属性和行为等。设计模式跟运行模式一样在呈现控件时都是在当前环境下生成控件实例呈现。当然,它们还是有区别的,设计模式较运行模式除了在控件生命周期阶段有些事件不执行外,也不能够访问一些在仅运行模式下才具有的上下文环境变量等。ASP.NET对设计模式支持也增加了很多功能,后面会专门一章讲解设计模式下控件开发。
在设计模式下,控件生命周期的所有方法并不是都执行的,比如CreateChildControls,OnPreRender,Load等方法在设计模式下就不会执行。而Init,Construct(构造方法),Render,RenderContents,还有Dispose等方法在设计模式下就会运行。这样设计的原则是合理的,因为在OnPreRender这一类事件中我们主要引入一些资源文件(JavaScript/Css/Pictures),在IDE设计器状态下这些文件路径是取不到的,它要根据当前运行的服务器虚拟路径来找到相应的文件名;还有,在Load,比如Page控件的PageLoad事件中,开发人员会将任意可能的代码放在这里执行,比如引用了服务端的上下文环境等,这时就会报"取不到信息"的异常错误。因此了解这些生命周期的方法哪些在设计模式下运行,哪些不运行是有必要的。
ASP.NET 2.0已经支持的一个属性DesignMode,如果是在设计模式状态下,此属性值为true,如果是在浏览器中运行状态下,值为false。这个属性常用于在设计和运行两种模式下都执行的方法,如Render方法。看一下这个伪代码例子:
/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.youkuaiyun.com/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>
protected override void Render(HtmlTextWriter writer)
{
if (this.DesignMode)
{
writer.Write("<table><tr><td>模拟数据</td><td>
模拟数据</td></tr></table>");
}
else
{
//访问数据库,取得真实数据,并输出列表
}
}
不管是设计模式还是运行模式,Render方法都会执行。使用条件语句来进行区分,在设计模式下,仅输出两列模拟数据,类型与我们在IDE设计器中使用GridView时看到的模拟数据一样;如果是在运行模式,则会在浏览器中看到从数据库中读取的真实数据。
电商系统,商品属性表和功能设计,可用于各种实体的属性 简介 定义一种通用的属性体系,可以表示任何实体的属性,同时也像数据库列一样,可以为属性指定数据类型.在电商系统中, 每个商品都有多个属性,并且这些属性不能提前设定,它们以无模式的key/value形式存在,我们可以简单的只保存key/value, 也可以把这种需求抽象成更通用,功能更强大的属性体系,这样就可以适用更多的场景. 数据库 property_key: 属性key property_key_definition:属性key定义,就好像MySQL column definition pr 阅读详情

相关推荐

winform自定义控件(gdi+)(2)———为自定义控件添加系统自带属性

我们在自定义控件的时候,难免需要给自定义控件类添加一系列的属性,本文就来讲解如何实现

qq_34059233的博客 1273

C#用户控件的创建

频繁要用到的控件,在系统控件或者第三方控件又找不到合适的,就做成用户控件,节约时间,方便使用。 这里以自定义按钮控件为例,介绍用户控件创建过程。 1. 新建windows窗体控件库项目。 2. 创建成功后,即可看到控件的原始形态。将UserControl1类重命名为MyButton。 3. 这里我们要实现一个自定义的按钮,按钮

已被格式化的叔叔 7011

安卓中各种intent的详细介绍

安卓中各种intent的详细介绍 String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。 String ALL_APPS_ACTION 动作:列举所有可用的应用。

.net组件开发——DesignerSerializationVisibility

指定属性是否以及如何在代码中序列化, &lt;wbr&gt;&lt;/wbr&gt; 其值为DesignerSerializationVis&lt;wbr&gt;ibility的枚举值,存在3种设置方式:&lt;/wbr&gt; &lt;wbr&gt;&lt;/wbr&gt; DesignerSerializationVis&lt;wbr&gt;ibility.&lt;strong

bulote 534

C#调用Bartender打印标签,除了打印还能一键导出图片和PDF(附完整代码)

本文详细介绍了如何使用C#集成Bartender实现标签的多格式输出,包括打印、图片和PDF导出。通过完整的代码示例和实战技巧,帮助开发者解决分辨率适配、纸张尺寸控制等核心问题,提升工业自动化和物流管理中的标签处理效率。

weixin_31236101的博客 369

归因分析计算因子贡献度常见的方法

在归因分析中,我们一般都需要计算出每个因子的贡献度是多少,比如产品DAU上升,对年龄段维度进行拆解,看是不同年龄段的用户对DAU上升的贡献度是多少,一般根据指标的类型,计算贡献度的方法也不一样,下面就列出一些常见的归因分析贡献度的计算方法。

Hubans的博客 4万+

【WinForm窗体控件开发】之四 DesignerSerializationVisibilityAttribute 控件属性的串行化...

这次我们来说说控件属性的串行化。 目的: 我们要明确控件属性为什么要串行化? 关于串行化的定义如果你还不熟悉的话可以Baidu下,简单的说就是,我们要将我们在控件属性上设定的值持久化到代码中,这样我们下次再查看控件的值依然是我们最后一次设定的值。 备注: 关于DesignerSerializationVisibilityAttribute的解释   指示一个属性是否串行化和如何...

weixin_30292745的博客 400

手把手教你绕过网易易盾验证码:滑块、点选、语序全攻略

本文深度解析了以网易易盾为代表的现代验证码技术,重点探讨了滑块、点选、语序及空间推理等交互式验证码的工作原理与对抗策略。文章从行为验证和空间推理的核心逻辑出发,剖析了验证码交互的数据流与关键参数,并提供了模拟人类行为轨迹、维护设备指纹等工程实践方法,旨在帮助开发者在合规前提下设计更健壮的自动化流程。

3c4x5z6v7b的博客 690

.net组件开发--DesignerSerializationVisibility

指定属性是否以及如何在代码中序列化, 其值为DesignerSerializationVisibility的枚举值,存在3种设置方式: DesignerSerializationVisibility.Hidden 指定序列化程序不应该序列化属性值; DesignerSerializationVisibility.Visible 指定应该允许序列化程序序列化属性的值; DesignerS...

weixin_30703911的博客 1095

ROS2 -Jazzy 一步一步(第一步_工作空间以及编译)

文件夹作用特点是否需要手动创建/维护src存放自己写的 ROS 2 包一个 workspace 可以有多个包需要手动创建build保存编译过程中的中间文件每个包生成对应子目录自动生成,可删除install保存编译完成后的功能包每个包有独立子目录,含可执行文件自动生成,可删除log保存编译日志用于查看错误原因、调试自动生成,不需修改colcon是 ROS 2 推荐使用的构建工具自动处理功能包的依赖和编译顺序一条命令就能编译整个工作空间。

jerrykorea的博客 1380

告别混乱代码!在Arduino IDE中管理多文件项目的5个必备技巧

本文分享了在Arduino IDE中管理多文件项目的5个必备技巧,帮助开发者告别混乱代码。通过代码分割和模块化设计,提升编译效率、降低内存占用,并实现功能解耦。重点介绍了头文件设计、CPP文件实现、调试技巧和工业级目录结构,让你的Arduino项目像乐高积木一样清晰易维护。

fun88的博客 360

【PHP进阶核心技能】:全面掌握类型属性,告别运行时类型错误

掌握PHP 7.4 类型属性(Type properties)有效避免运行时类型错误,提升代码健壮性。适用于类属性声明、严格模式开发,支持字符串、数组、对象等类型限定,增强IDE提示与维护性。核心技巧+实战示例详解,值得收藏。

LiteTrans的博客 707

基于鸿蒙 UniProton 的汽车电子系统开发指南

基于鸿蒙UniProton实时操作系统,提供了汽车电子系统开发的完整指南。通过统一的设计模式和开发规范,实现了高效、可靠的汽车电子系统开发。

m0_67505153的博客 178

WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口

当我们对 Window 类型写一个附加属性的时候,在属性变更通知中我们需要判断依赖对象是否是一个窗口。但是,如果直接判断是否是 Window 类型,那么在设计器中这个属性的设置就会直接出现异常。 那么有没有什么方法能够得知这是一个设计时的窗口呢?这样就不会抛出异常,而能够完美支持设计器了。 本文内容方法一:判断设计时属性方法二:判断设计时窗口 方法一:判断设计时属性 WPF 原生自带一个附加属性...

walterlv - 吕毅 889

【MATLAB代码】TDOA+TOA融合算法,高精度定位。通过多边定位解算4个锚点、平面目标的位置,附代码

二维平面下的TOA、TDOA及混合定位算法,通过4个锚节点对目标点进行定位。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 210

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CSS基础(列表相关属性、边框相关属性、表格独有属性、背景相关属性、鼠标相关属性、常用长度单位、元素的显示模式)

CSS基础(列表相关属性、边框相关属性、表格独有属性、背景相关属性、鼠标相关属性、常用长度单位、元素的显示模式)

聂可以的博客 1448

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【avalonia教程】09设计时绑定与所有控件都有DataContext属性

本文介绍了AvaloniaUI中的设计时绑定机制,重点讲解了DataContext属性的层级继承原理。设计时通过Design.DataContext可在预览窗口模拟数据绑定效果,但不会影响运行时行为。所有控件都具有DataContext属性,子控件会逐级向上查找父控件的DataContext进行数据绑定。文中还演示了在XAML和代码中设置DataContext的不同方式,并解释了绑定的查找路径机制,最后通过示例展示了父控件DataContext的类型转换和继承特性。

baidu_33755215的博客 1289

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

属性与类型:扩展实体与关系的描述

1.背景介绍 在计算机科学领域,实体与关系是数据库设计中的基本概念。实体表示实际存在的事物,关系则表示实体之间的联系。属性与类型是数据库设计中的另一个重要概念,它用于描述实体和关系的特征。在本文中,我们将深入探讨属性与类型的概念、核心算法原理以及最佳实践。 1. 背景介绍 数据库是一种结构化的数据存储和管理系统,它使用数据库管理系统(DBMS)来存储、管理和控制数据。数据库中的数据是通过表(...

AI天才研究院 952

media属性和媒体类型

一、media属性<br />当设定样式的时候,可以指定此样式应用于何种媒体,例如:<link rel="stylesheet" href="basic.css" type="text/css" media="screen" /><br /><br />media属性为可选属性,用于指定应用此样式表的介质或媒体。允许的值有:screen (缺省值),用于文档在屏幕媒体的呈现,如电脑显示器,所有 web 浏览器都运行于这样的系统屏幕媒体用户代理;print, 应用于不透明的页面材料,以及文档在打印预览的状态

猫沙盆 5878

PCL入门系列 —— 点云数据类型及相关属性

如果是对有序点云数据进行处理,要注意无效点数据,通常无效点的x,y,z属性数值以nan、inf、0等形式表现; 尤其是在对单点进行操作时(如邻域搜索等),要注意无效点的处理;

工业机器视觉 1353

各数据表字段的数据类型与相关属性应该如何设计?分类列出并说明原因

原因: 浮点型适合存储需要精确到小数的数值,如价格、测量值等。原因: DATETIME 适合存储具体的时间点,TIMESTAMP 适合存储时间戳,通常用于记录数据的创建或修改时间。原因: CHAR 适合存储固定长度的字符串,VARCHAR 适合存储可变长度的字符串,节省存储空间。原因: 适合存储文章、评论等长文本,TEXT 类型可以存储更大的数据量。存储效率: 不同的数据类型占用的存储空间不同,合理选择可以节省存储资源。原因: 整型适合存储计数、ID等不需要小数的数值,且占用空间较小。

hxj_686的博客 579

[kotlin] Kotlin委托属性与类型别名

委托属性是Kotlin中一项强大的特性,允许将属性的访问器逻辑委托给另一个对象处理。// 基本语法:by 关键字// 将属性p的getter/setter委托给Delegate实例// 委托类必须提供getValue和setValue方法private var storedValue: String = "默认值"println("获取属性${propertyname// 基本语法:by 关键字 class Example {

2301_77946674的博客 1001

用户自定义属性表结构设计_属性类型定制及其妙用

引擎版本 4.22.0属性类型定制简介在介绍属性类型定制前先了解下引擎提供的默认的详细布局。默认详细布局只要我们的UPROEPRTY类型是值类型,编辑器系统就会在详细面板为你创建一个默认布局。如下图所示:属性类型定制(Property Type Customization)当你创建了需要更改布局的自定义结构时,属性类型定制就变得非常有用。目前属性类型定制只适用于USTRUCT的接口,IPrope...

weixin_40001967的博客 1121

如何让.Net控件在设计时InitializeComponent()中不生成相关代码

组件的一些公共属性不希望被VS在设计时加到InitializeComponent()方法中怎么处理呢?我试过了,将属性加上[Browsable(false)]也不行。我的代码如下: /// <summary> /// 控制器通讯类型下拉列表框。 /// </summary> public class CommunicationTypeComboBo...

weixin_30328063的博客 196

Windows 窗设计时结构

Windows 窗设计时结构 Windows 窗体编程 设计时结构 下面的阐释概述了 .NET Framework 中的设计时结构。 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='点击在新窗口浏览图片\nCTRL+...

156
上一篇: C#实现给图片加透明度水印
下一篇: asp.net(c#)网页跳转七种方法小结
wonsoft
博客等级 码龄23年 228粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值