zoukankan      html  css  js  c++  java
  • [原创]屏蔽.NET自定义开发组件中的属性

    今天看见一个网友的留言:
    有一个问题请教一下兄台,对于继承自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" );
            }


        }

    }

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

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

  • 相关阅读:
    用户登录
    在ASP.NET里实现计算器代码的封装
    计算器的封装
    典型用户和场景-老陈、小石头
    葫芦娃团队
    20155235 王玥 《基于Arm实验箱的接口测试和应用》 课程设计报告
    实验补交专用链接随笔
    20155235 《网络攻防》 实验九 Web安全基础
    20155235 《网络攻防》 实验七 网络欺诈防范
    20155235 《网络攻防》 实验八 Web基础
  • 原文地址:https://www.cnblogs.com/mack/p/35805.html
Copyright © 2011-2022 走看看