自定义asp.net控件分析

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

前些日子,自己做了几个控件。想把自己对自定义控件的一些了解写出来,请大家多多发表自己对自定义控件制作的心得。

让我们能更好的动手制作自己所需功能的控件。

下面就以,.net自动生成的模版做一解释。(以vb语言为例)

1.Imports System.ComponentModel

2.Imports System.Web.UI

3.<DefaultProperty("Text"), ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")> Public Class WebCustomControl1

4.    Inherits System.Web.UI.WebControls.WebControl

5.    Dim _text As String

6.    <Bindable(True), Category("str"), DefaultValue("11111")> Property [Text]() As String

7.         Get

8.            Return _text

9.         End Get

10.        Set(ByVal Value As String)

11.            _text = Value

12.        End Set

13.    End Property

14.    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)

15.        output.Write([Text])

16.    End Sub

17.End Class

'---------------------------------------------------------------

'1-2 导入命名空间,System.ComponentModel和 System.Web.UI 这没什么好介绍的

'3 DefaultProperty("Text")--指定属性的默认值。如果用此属性需要导入(命名空间: System.ComponentModel)

ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")

指定当从 Visual Studio 等工具中的工具箱拖动自定义控件时为它生成的默认标记。

在下面的示例中,设置特定于 MyLabel 的若干属性。{0} 的所有匹配项都由设计器替换为与 MyLabel 类关联的标记前缀。

<ToolboxData("<{0}:MyLabel Text='MyLabel' BorderColor='Yellow' BackColor='Magenta' BorderWidth = '10'  runat='server'></{0}:MyLabel>")>

Public Class WebCustomControl1定义类名为webcustomcontrol1,以后编译生成的dll名为webcustomtrol1

(注意:如果你修改类名。则需要修改{0}:后相对应的名字。例如:你把类名webcustomcontrol1改为webcustom

则需要把ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")改成

ToolboxData("<{0}:webcustom runat=server></{0}:webcustom>") 否则编译后将出错。)

'4 Inherits 表示继承。这里是继承System.Web.UI.WebControls.WebControl的方法,属性,事件等。

'6 这句主要是控制自定义控件在’属性浏览器‘中的显示,先解释模版的句子,再扩展开讲

Property [Text]() As String定义 text属性 为字符串类型

Bindable(True)指定是否要绑定到该属性。-True为是,False为不

Category("Appearance") --text属性将显示在外观组中。指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。

DefaultValue("")为属性设置一个简单的默认值。这里为空

下面列出所有的特性

详细资料可查看ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpcondesign-timeattributesforcomponents.htm

 

 

属性

应用于

说明

BrowsableAttribute

属性和事件

指定属性或事件是否应该显示在属性浏览器中。

CategoryAttribute

属性和事件

指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。

DescriptionAttribute

属性和事件

定义一小块文本,该文本将在用户选择属性或事件时显示在属性浏览器底部。

BindableAttribute

属性

指定是否要绑定到该属性。

DefaultPropertyAttribute

属性

(将此特性插入类声明前。)

指定组件的默认属性。当用户单击控件时,将在属性浏览器中选定该属性。

DefaultValueAttribute

属性

为属性设置一个简单的默认值。

EditorAttribute

属性

指定在可视设计器中编辑(更改)属性时要使用的编辑器。

LocalizableAttribute

属性

指定属性应本地化。当用户要本地化某个窗体时,任何具有该特性的属性都将自动永久驻留到资源文件中。

DesignerSerializationVisibilityAttribute

属性

指定显示在属性浏览器中的属性是否应该(以及如何)永久驻留在代码中。

TypeConverterAttribute

属性

指定将属性的类型转换为另一个数据类型时要使用的类型转换器。

DefaultEventAttribute

事件

(将此特性插入类声明前。)

指定组件的默认事件。这是当用户单击组件时在属性浏览器中选定的事件。

 

.net中还支持自定义特性,这里就不说,有兴趣的可以去查msdn,上面有详细说明 

可参考ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconwritingcustomattributes.htm

7-12很简单,意思就是返回(Get)Text属性的值和设置(Set)Text属性的值

13 Text属性的结束

14-16 这个过程作用是重写控件的呈现。这里是在页面上显示Text属性的值

 

这里只是简单介绍了一下自定义控件。我将在下一篇里,用例子来具体介绍自定义控件中的属性、方法、事件。


asp.net中当你想对buttonclick事件做确认操作,但Button按钮不能满足此要求。就针对此要求来编写自己的控件。

======================================================================

继承:System.Web.UI.WebControls.Button

控件功能:弹出确认消息框

控件属性:message(消息框中显示的信息)

控件方法:不需要

控件事件:不需要

使用方法:“确定”执行按钮的button_click事件,“取消”不执行任何事件。

Imports System.ComponentModel

Imports System.Web.UI

 

Namespace WebControls

 

    <DefaultProperty("Text"), ToolboxData("<{0}:ConfirmButton runat=server></{0}:ConfirmButton>")> Public Class ConfirmButton

         '继承button

        Inherits System.Web.UI.WebControls.Button

        '为其所包含的任何服务器控件提供唯一的命名空间

        Implements INamingContainer

        Dim _Message As String

        '定义message属性。

        <Bindable(True), Category("Appearance"), DefaultValue("")> Property [Message]() As String

            Get

                Return _Message

            End Get

            Set(ByVal Value As String)

                _Message = Value

            End Set

        End Property

 

        Public Sub New()

            _Message = ""

        End Sub

'重写控件的输出

        Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)

           '为控件增加客户端onclick事件。

            If Me.Message.Trim <> "" Then Me.Attributes.Add("onClick", "jscript:if(!confirm('" & Me.Message & "')) return false;")

            Me.Attributes.Add("onFocus", "jscript:this.blur();")

            MyBase.Render(output)

        End Sub

    End Class

End Namespace

 

到此,控件就编写完了,你看是不是很简单。

Asp.Net 分页技术全面学习资料包(3MB) 本文还有配套的精品资源,点击获取 简介:本资料包为Asp.Net开发者提供了全面的分页技术学习资源,覆盖了从前端到后端,以及从数据库交互到自定义控件的实现。其中包括深入的自定义控件开发教程,AspNetPager控件及源码演示,分页基本实现的示例代码,以及对早期分页控件的源码分析。这些内容将帮助开发者理解分页控件的工作原理和数据交互,以及如何提升分页功能的用户体验和性能。 ... 阅读详情

相关推荐

ASP.NET自定义菜单控件开发实战教程

ASP.NET 是一个服务器端的 Web 应用开发框架,它被设计为可以用来构建动态网站、Web 应用和Web服务。通过使用.NET框架,ASP.NET能够提供一种简化的方式来开发和部署丰富的、交互式的Web应用程序。HeroBeastControls 是一个功能强大的自定义菜单控件,设计用于提供更丰富的交互体验和更灵活的定制选项。在这一章节中,我们将深入探讨 HeroBeastControls 控件的特性、架构设计以及它如何克服传统 MENU 控件的限制。

weixin_42596011的博客 1070

自定义asp.net控件分析 (一) (转)

自定义asp.net控件分析 (一) (转)[@more@]自定义ASP.NET控件分析 (一)XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:of...

csd3176的博客 123

自定义asp.net控件分析 (一)

自定义asp.net控件分析 (一)前些日子,自己做了几个控件。想把自己对自定义控件的一些了解写出来,请大家多多发表自己对自定义控件制作的心得。让我们能更好的动手制作自己所需功能的控件。下面就以,.net自动生成的模版做一解释。(以vb语言为例)1.Imports System.ComponentModel2.Imports System.Web.UI3.")> Publi

jxf_yx的专栏 1703

[导入]自定义asp.net控件分析

自定义asp.net控件分析文章来源:http://blog.csdn.net/21aspnet/archive/2004/10/24/149763.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/10/25/816366.html

weixin_30344995的博客 59

自定义asp.net控件分析(二)

自定义asp.net控件分析(二)上一篇分析自定义控件的基本语法。这次编写一控件来作为实例。在asp.net中当你想对button的click事件做确认操作,但Button按钮不能满足此要求。就针对此要求来编写自己的控件。======================================================================继承:System.

jxf_yx的专栏 1453

自定义asp.net控件分析(二) (转)

自定义asp.net控件分析(二) (转)[@more@]自定义ASP.NET控件分析(二)XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:offi...

cuiji1279的博客 62

asp.net 自定义组合控件必须继承INamingContainer接口原因分析

本人也是接触控件开发不就,说的不对的地方欢迎指正。 分两种情况来分析: 1、页面存在多个自定义控件 我们都知道INamingContainer接口功能就是为每一个控件生成唯一的Id,防止页面上存在多个自定义控件控件Id重复造成的混乱。想必这种情况大家都很好理解 2、页面只存在一个自定义控件自定义控件没有继承INamingContainer接口时,会导致其子控件

taoerchun的专栏 2242

自定义控件中的ParseChildren

今天写demo的时候,居然出现这样的错误: Parser Error Message: Type 'ServerControl_CachePanel.CachePanel' does not have a public property named 'WebUserControl1'. 静下心来想了一会,发面它可能和自定义控件中的Pars...

dhka8040652的博客 156

开发和使用自定义服务器控件(一)

ASP.NET  自定义服务器控件的元数据属性   元数据属性应用于服务器控件及其成员,从而提供由设计工具、ASP.NET分析器、ASP.NET 运行库以及公共语言运行库使用的信息。当页开发人员在可视化设计器中使用控件时,设计时属性能改进开发人员的设计时体验。仅用于设计时的属性在页请求期间对控件的功能没有任何影响。控件分析时属性由 ASP.NET分析器在其读取页中

zhangjian01361的专栏 1049
上一篇: 用户控件为什么要公开属性等
下一篇: 如何使用Css样式自定义一个DataGrid的风格
linuxdotnet
博客等级 码龄22年 1粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值