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" );
            }


        }

    }

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

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

  • 相关阅读:
    (基础篇)正则表达式的语法汇总与详细介绍
    (基础篇) 正则表达式详解
    (基础篇)PHP字符串操作
    (基础篇)PHP流程控制语句
    CentOS 7.0 安装配置 kafka 消息队列
    配置 Gitblit 进行 Git 代码管理
    nexus 中央仓库
    svn + jenkins + maven 实现java环境的自动化构建和部署
    Mariadb galera 群集
    Jboss 集群配置
  • 原文地址:https://www.cnblogs.com/mack/p/35805.html
Copyright © 2011-2022 走看看