ASP.NET2.0自定义控件属性的写法

 

你可注意VS中属性栏里有如下一些属性形式,红色标记部分:

属性描述:属性描述

一般属性:一般属性

下拉列表属性:下拉列表属性

树状属性:树状属性

那么它们是怎么简单地实现的呢?答案就在下面,

 1.属性描述

 属性描述包含在属性定义的开头,"[.....]"一段代码中.

代码:

        [
         Bindable(
true ),  // 是否显示在属性栏中
         Category( " Appearance " ),  // 属性的分类,Appearance表示将此属性显示在"外观"栏中
         DefaultValue( "" ),  // 属性的默认值
         Description( " 设置或获取BaseControl类型 " // 属性栏下方的描述
        ]
        
public   virtual  ControlType Type
        
{
               
//属性的定义部分
        }

2.一般属性

代码:

        [属性描述]
        
public   string  Title
        
{
            
get
            
{
                
object o = ViewState["Title"];
                
if (o == null)
                    
return String.Empty;
                
return (string)o;
            }

            
set { ViewState["Title"= value; }
        }

如果只想让属性为只读的话,只需写get语句就行了.如果属性是只读的,它在属性栏中显示灰色.

3.下拉列表属性

此中属性要定义一个枚举类型. 

代码:

     public   enum  ControlType
    
{
        Label
=0,
        TextBox
=1,
        DatePicker
=2
    }


    
public   class  BaseControl : WebControl, INamingContainer
    
{
        ......

        [属性描述]
        
public virtual ControlType Type
        
{
            
get
            
{
                
object _type = ViewState["Type"];
                
if (_type == null)
                    
return ControlType.TextBox;
                
else
                    
return (ControlType)_type;
            }

            
set
            
{
                ViewState[
"Type"= value;
            }

        }

        
        ......
    }

 

4.树状属性

我们先给子属性定义的类. 

代码:

     public   class  LabelTextBox : Control
    
{
         
private SizeInfo _size;

        [Browsable(
true),
         Description(
"获取和设置控件的大小"),
         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
         NotifyParentProperty(
true),
         Category(
"Appearance")
        ]
        
public virtual SizeInfo Size
        
{
            
get 
            
{
                
if (_size == null)
                    _size 
= new SizeInfo();
                
return _size;
            }

        }


         ......
    }


    [TypeConverter(
typeof (ExpandableObjectConverter))]
    
public   class  SizeInfo
    
{
        
private int _width;
        
private int _height;

        [NotifyParentProperty(
true)]
        
public int Width
        
{
            
get return _width; }
            
set { _width = value; }
        }


        [NotifyParentProperty(
true)]
        
public int Height
        
{
            
get return _height; }
            
set { _height = value; }
        }

    }

这里的属性用另外一种方式写的,建议还是用第一种方式写比较好.

关于属性的定义写的不够全面,论述的不够深入,由于笔者学浅,请多多提出宝贵意见.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值