MSPlus WebControls For ASP.NET. (服务器端控件)

Upgrade Develop Efficiency,Surprise For U! - Mack.Z

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
今天看见一个网友的留言:
有一个问题请教一下兄台,对于继承自microsoft的.net framework中现有的组件,怎么将一些属性屏蔽掉,就是新的组件不提供继承来的属性,比如继承Panel新编写EPanel,对于panel的属性的BackColor怎么屏蔽掉??

这个问题解决方法如下:

第一步:在你的控件类中定义设计时中提供服务的类
[Designer(typeof (MSPlus.Web.UI.Design.WebControls.ButtonDesigner))]
    [Description( "MSPlus WebControl Button" )]
    [Designer(
typeof (MSPlus.Web.UI.Design.WebControls.ButtonDesigner))]
    
public sealed class Button: MSPlusWebControl, IPostBackEventHandler
    
{
}

第二步:新增一个设计时服务类,这个类继承 System.Web.UI.Design.ControlDesigner
第三步:重写PostFilterProperties()方法,

允许设计器从通过 TypeDescriptor 公开的属性集中更改或移除项。

/**
 *    命名空间:    MSPlus.Web.UI.Design.WebControls
 *    类:                ButtonDesigner
 * 
 *    作者:            Mack.Z
 *    完成日期:    2003-12-21    
 *    版权信息:    MSLULU (2000.10.10)
 *
*/


using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;

namespace MSPlus.Web.UI.Design.WebControls
{
    
/// <summary>
    
/// ButtonDesigner 的摘要说明。
    
/// </summary>

    public class ButtonDesigner:System.Web.UI.Design.ControlDesigner
    
{
        
public ButtonDesigner()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }


        
protected override void PostFilterProperties( IDictionary Properties )
        
{
            Properties.Remove( 
"Height" );
            Properties.Remove( 
"BackColor" );
            Properties.Remove( 
"BorderWidth" );
            Properties.Remove( 
"Font" );
            Properties.Remove( 
"ForeColor" );
            Properties.Remove( 
"TabIndex" );
            Properties.Remove( 
"ToolTip" );
            Properties.Remove( 
"Enabled" );
            Properties.Remove( 
"EnableViewState" );
        }


    }

}

注:这个方法只是屏蔽设计时的属性,但对于在代码文件通过智能提示的属性值是无法移除的(目前好像是没有办法作到)

如果大家有控件开发上的问题,也可以在我的主页上留言.

posted on 2004-08-23 09:46  Mack.Z  阅读(4237)  评论(17编辑  收藏  举报