快速业务通道

asp.net控件设计时支持(4)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

一.单区域编辑

1.介绍

在内置控件中,典型的则是Panel控件,如下图

asp.net控件设计时支持(4)

其在设计时提供了一个编辑区域,可方便的编辑控件内部文本,并提供了一个标题属性,此设计时呈现效果并非呈现以后的效果.另外除Panel控件外,MultiView控件也提供相似的设计时支持.下面我们看一下类图

asp.net控件设计时支持(4)

ContainerControlDesigner 提供单个带框区域来表示控件,注意是单个,你只需要关注以上两个属性和一个方法既可,最终的封装实现还是调用GetDesignTimeHtml 方法的,以下为属性简单说明

FrameCaption 设置时显示的标题

FrameStyle 设置时显示的标题样式

2.实现

2.1 自定义一个继承ContainerControlDesigner的类,并重写相关属性

  public class SimpleContainerControlDesigner : ContainerControlDesigner
  {
    private Style _style = null;
    //设计时标题
    public override string FrameCaption
    {
      get
      {
        return "我的测试控件";
      }
    }
    //设计时标题样式
    public override Style FrameStyle
    {
      get
      {
        if (_style == null)
        {
          _style = new Style();
          _style.Font.Name = "Verdana";
          _style.Font.Size = new FontUnit(FontSize.XLarge);
          _style.BackColor = Color.LavenderBlush;
          _style.ForeColor = Color.DarkBlue;
        }
        return _style;
      }
    }
  }

2.2 自定义控件,并与控件相关联,该控件只提供了一个背景图片的属性

  [
    Designer(typeof(SimpleContainerControlDesigner)),
    ParseChildren(false)
  ]
  public class SimpleContainerControl : WebControl
  {
    public string BackgroundImage
    {
      get { return ViewState["BackgroundImage"] != null ? (string)ViewState["BackgroundImage"] : ""; }
      set { ViewState["BackgroundImage"] = value; }
    }
    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
      base.AddAttributesToRender(writer);
      writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundImage, BackgroundImage);
    }
  }

好了,大功告成,可以看下效果了

asp.net控件设计时支持(4)

2.3 设计时区域样式

还没完呢,为什么我故意设置一个BackgroundImage属性呢,现在我们设置BackgroundImage属性,当设置好以后(请一定设置此属性),你有没发现此控件区域内并没有出现背景图片.还不如不加自定义的设计时支持呢?

原因: 区域编辑区域样式的设计时的每个属性都是由ContainerControlDesigner帮你写好的,里面包括WebControl公有属性,这些不需要你重写,但当你自定义属性需要呈现,而你又想完美的在设计时看到效果时,则你必须重写AddDesignTimeCssAttributes方法了,如BackgroundImage属性,Panel控件也有背景图片这个属性,其设计时支持也是这么做的.实现方法如下

    //添加设计时样式属性
    protected override void AddDesignTimeCssAttributes(System.Collections.IDictionary styleAttributes)
    {
      base.AddDesignTimeCssAttributes(styleAttributes);
      SimpleContainerControl control = base.ViewControl as SimpleContainerControl;
      string BackgroundImage = control.B

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号