用户控件为什么要公开属性等

控件布局中的所有控件的类保护级别,他们对于外部调用者来说都是不可访问的,要解决这个问题,需要为每一个要公开的控件定义一个公共属性(最好是只读的,但是调用者可以设置他们的任何属性),要确保这些属性与他们所表示的控件的ID有不一样的名称。

用户控件定义方法:只需要定义一个公共的方法。

用户控件公开事件:需要回答一个问题是是否要返回事件特定的数据。传递或者不传递数据会影响控件及其客户端用来处理事件的事件处理程序的签名。如果不需要传递数据,那么可以使用标准的事件处理程序EventHandler。在这种情况下,一个名为DateChanged的公共事件是这样声明的:

public event EventHandler DateChanged;

还需要一个帮助函数在空间内部调用用户定义的事件处理程序。一般采用下面的方式

protected virtural void OnDateChanged(EventArgs e){

              if(DateChanged != null){

                                  DateChanged(this,e)}

}

在涉及到自定义的数据时,需要定义一个扩展了类EventArgs的特别数据结构,以及一个使用这种数据结构的新委托类型(delegate----一种安全的函数指针)最后控件公开的事件.

 如果类引发多个事件,可以通过使用事件属性而不是事件字段来优化他们的存储方式。对于事件字段,编译器为事件委托的每一个实例生成一个字段,对于大量不常使用的事件来说是不能接受的。事件属性包含由事件访问器伴随的事件声明:

public event DateChangerHandler DateChanged{  add{ Events.AddHandler(eventDateChanged,value);} remove{ Events.RemoveHandler(eventDateChanged,Value);}}

所有用户控件-----即所有的ASCX文件引用的Asp.net元素都属于ASP名称空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值