没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2005-03-02 13:14:00.000|阅读 1146 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
设计视图和元数据特性
Visual Studio .NET
为使用拖放技术的动态控件设计和修改提供了丰富的支持,同时还提供了属性浏览器之类的工具以及相关的设计器(例如颜色选择器)。对这些工具的支持是通过一系列特性提供的,您可以将这些特性添加到您的控件中。这些特性用于告诉
Visual Studio IDE 是否在属性浏览器中显示控件的属性、属性所属的类型以及应使用哪个设计器设置属性的值。
对于将要提供设计时支持的控件版本,我们将制作一份控件文件 Blog.vb 的副本,并将其命名为 Blog_DT.vb,然后在副本文件上进行修改。这样可以生成该控件的设计时版本,并保留原始控件以便进行比较。
要支持在属性浏览器中编辑 AddRedirect 属性,应在属性进程之前添加以下特性,如以下代码片段所示:
<Browsable(True), _设计视图和元数据特性
Visual Studio .NET
为使用拖放技术的动态控件设计和修改提供了丰富的支持,同时还提供了属性浏览器之类的工具以及相关的设计器(例如颜色选择器)。对这些工具的支持是通过一系列特性提供的,您可以将这些特性添加到您的控件中。这些特性用于告诉
Visual Studio IDE 是否在属性浏览器中显示控件的属性、属性所属的类型以及应使用哪个设计器设置属性的值。
对于将要提供设计时支持的控件版本,我们将制作一份控件文件 Blog.vb 的副本,并将其命名为 Blog_DT.vb,然后在副本文件上进行修改。这样可以生成该控件的设计时版本,并保留原始控件以便进行比较。
要支持在属性浏览器中编辑 AddRedirect 属性,应在属性进程之前添加以下特性,如以下代码片段所示:
<Browsable(True), _
Category("行为"), _
Description("成功提交新的 Blog 条目后, " & _
"应重定向到的 " & _
"页面的 URL。"), _
Editor("System.Web.UI.Design.UrlEditor", _
GetType(UITypeEditor))> _
Public Property AddRedirect() As String
'属性进程代码
End Property
这些特性声明允许在属性浏览器中显示属性、为属性设置所需的类别(当属性按类别排序时)、提供属性说明并告诉 Visual Studio .NET 使用
UrlEditor 类编辑属性的值,如图 4 所示。
图 4:设计视图中的属性支持
此处所述的特性语法适用于 Visual Basic .NET。在 Visual Basic .NET 中,特性通过以下语法进行声明:
<AttributeName(AttributeParams)>
在 C# 中,特性采用如下形式:
[AttributeName(AttributeParams)]
Visual Basic .NET 要求特性声明与其修改的成员位于同一行中,因此通常最好在特性后面跟一个 Visual Basic 行接续字符以提高可读性:
<AttributeName(AttributeParams)> _
Public Membername()
在 C# 和 Visual Basic 中,您可以在一对 [ ] 或 <> 括号中声明多个特性,特性之间用逗号分隔。而在 Visual Basic .NET
中,如果它们出现在不同的行中,则必须使用 Visual Basic 行接续符衔接特性,使其位于同一个语句中。
添加工具箱支持
除了设置属性级别的特性外,还可设置某些类和程序集级别的特性。例如,您可以使用程序集级别的特性 TagPrefix
来指定标记前缀,供程序集中包含的任何控件使用。之后,当您从 Visual Studio 工具箱中向某个 Web 窗体页上添加该控件的实例时,Visual
Studio .NET 将自动插入这个标记前缀。以下代码片段显示了 TagPrefix
特性的语法。该特性应放置在定义该控件的类模块内,但应在类和命名空间声明之外(请注意,在 Visual Basic .NET
项目中,命名空间是在项目级别定义的,因此您不用担心如何将程序集特性放置到命名空间声明之外)。在以下特性中,TagPrefix
特性的第一个参数是控件的命名空间,第二个参数是您希望为标记前缀使用的文本。
<Assembly: TagPrefix("BlogControl", "BlogControl")>
要将控件集成到 Visual Studio .NET 环境中,应将 ToolBoxData 特性(该特性用于告诉 Visual Studio .NET
从工具箱中为控件插入的首选标记名)添加到实现该控件的类中:
<ToolboxData("<{0}:Blog_DT runat=server></{0}:Blog_DT>")> _
Public Class Blog_DT
Inherits Panel
Implements INamingContainer
'控件实现
End Class
将控件从工具箱中插入到页面上时,由 TagPrefix 特性指定的标记前缀将插入 {0} 占位符,而其他文本将按原样插入。
您还可以为控件提供自己的自定义图标,以显示在工具箱中。为此,需要创建一个 16 x 16
像素大小的位图(左下方的像素采用透明色),其名称与包含该控件的类相同(即 classname.bmp)。使用 Add Existing
Item(添加现有项)命令将该位图添加到项目中,然后使用属性浏览器将其 Build Action(创建操作)设置为 Embedded
Resource(内置资源),如图 5 所示。
图 5:设置 Build Action(创建操作)
编译完成后,该控件将支持从工具箱中将控件添加到某个页面中时为 Blog 控件自动插入 @Register
指令、标记前缀和标记名,并在工具箱中显示自定义图标,如图 6 所示。要将控件添加到 Visual Studio .NET 工具箱中,应完成以下简单步骤:
在设计视图中,选择 Visual Studio .NET 工具箱的 Web forms(Web 窗体)选项卡。
在该选项卡上的任意位置单击鼠标右键,然后选择 Add/Remove Items(添加项目/删除项目)(Visual Studio .NET 2002 中为
Customize Toolbox [自定义工具箱])。
选择 .NET Framework Components(.NET Framework 组件)选项卡,然后单击 Browse(浏览)。
浏览到编译后的控件程序集所在的位置,选中它并单击 Open(打开)。
单击 OK(确定)。
图 6:工具箱中的自定义控件
将控件添加到工具箱中后,可以通过双击该控件或将其从工具箱中拖放到 Web 窗体页上,将其添加到 Web 窗体页中。无论何种情况,Visual Studio
.NET 都会自动插入正确的 @Register 指令(包括基于程序集级别的特性设置 TagPrefix),还将使用 ToolBoxData
属性中指定的标记名为该控件生成一组标记。
添加设计器
正如前文所述,Blog 控件在 Web
窗体编辑器的设计视图中没有任何可视界面。这使得选择页面上的控件很困难,更难以理解控件在运行时的外观。为了解决这个问题,我们可以添加设计器支持,使设计时的
HTML 在外观上接近于运行时的 Blog 控件。请注意,您还可以生成可以完整再现控件运行时输出的设计器,但此操作相当复杂,而且超出了本文的讨论范围。
所有服务器控件设计器都是从类 System.Web.UI.Design.ControlDesigner
派生而来,该类提供了大量方法,您可以重写这些方法为您的控件提供设计时渲染。以下代码简单重写了 GetDesignTimeHtml 方法,返回设计时显示的简单
HTML。请注意,该示例显示了 Blog 控件的整个设计器类,您可以简单地将其添加到现有的 Blog_DT.vb 类文件中。
Public Class BlogDesigner
Inherits ControlDesigner
Public Overrides Function GetDesignTimeHtml() As String
Return "<h1>Blog</h1><hr/><hr/>"
End Function
End Class
要将该设计器绑定到 Blog_DT 类中,我们使用了 Designer 特性,如以下片段所示。请注意,此段代码还添加了一个描述控件功能的 Description
特性。
<Description("简单 Blog 控件。支持显示 " & _
"Web 日志/来自 XML 文件的新条目。"), _
Designer("BlogControl.BlogDesigner"), _
ToolboxData("<{0}:Blog_DT runat=server></{0}:Blog_DT>")> _
Public Class Blog_DT
Inherits Panel
Implements INamingContainer
如您所见,BlogDesigner 类非常简单,但它为控件在 Web 窗体页上的设计时外观添加了大量内容,如图 7 所示。
图 7:添加设计时渲染
列表 4 显示了 Blog 控件的代码,它已经使用特性进行了更新,以启用设计视图和属性浏览器中的控件设计时支持。请注意,该示例添加了多条 using
指令,以导入支持我们使用的特性和设计器类所需要的命名空间。这个新列表还添加了一个用于 Mode 属性值的枚举。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号