posts - 22,  comments - 37,  trackbacks - 2

如何给CheckBoxList和RadioButtonList添加滚动条??
继承基类CheckBoxList和RadioButtonList,添加滚动属性,重写Render方法即可。
属性列表:

#region 滚动控制
        private bool _ShowScrollBar = false;
        /// <summary>
        /// 显示滚动条
        /// </summary>
        [
       System.ComponentModel.Description("是否显示显示滚动条")
       , System.ComponentModel.DefaultValue(false)
       , System.ComponentModel.Category("滚动条设置")
       , System.ComponentModel.Bindable(System.ComponentModel.BindableSupport.Yes)
       ]
        public bool ShowScrollBar
        {
            get { return _ShowScrollBar; }
            set { _ShowScrollBar = value; }
        }
        private Overflow _OverflowY = Overflow.auto;
        /// <summary>
        /// 竖直滚动条
        /// </summary>
        [
       System.ComponentModel.Description("竖直滚动条")
       , System.ComponentModel.DefaultValue(Overflow.auto)
       , System.ComponentModel.Category("滚动条设置")
       , System.ComponentModel.Bindable(System.ComponentModel.BindableSupport.Yes)
       ]
        public Overflow OverflowY
        {
            get { return _OverflowY; }
            set { _OverflowY = value; }
        }
        private Overflow _OverflowX = Overflow.auto;
        /// <summary>
        /// 水平滚动条
        /// </summary>
        [
       System.ComponentModel.Description("水平滚动条")
       , System.ComponentModel.DefaultValue(Overflow.auto)
       , System.ComponentModel.Category("滚动条设置")
       , System.ComponentModel.Bindable(System.ComponentModel.BindableSupport.Yes)
       ]
        public Overflow OverflowX
        {
            get { return _OverflowX; }
            set { _OverflowX = value; }
        }
        private Unit _ScrollHeight = Unit.Parse("0px");
        /// <summary>
        /// 滚动高度
        /// </summary>
        [
       System.ComponentModel.Description("滚动高度")
       , System.ComponentModel.Category("滚动条设置")
         , DefaultValue("0px")
       , System.ComponentModel.Bindable(System.ComponentModel.BindableSupport.Yes)
       ]
        public Unit ScrollHeight
        {
            get { return _ScrollHeight; }
            set { _ScrollHeight = value; }
        }
        private Unit _ScrollWidth = Unit.Parse("0px");
        /// <summary>
        /// 滚动宽度
        /// </summary>
        [
       System.ComponentModel.Description("滚动宽度")
       , System.ComponentModel.Category("滚动条设置")
        , DefaultValue("0px")
       , System.ComponentModel.Bindable(System.ComponentModel.BindableSupport.Yes)
       ]
        public Unit ScrollWidth
        {
            get { return _ScrollWidth; }
            set { _ScrollWidth = value; }
        }
        private string _ScrollCssClass = "";
        /// <summary>
        /// 滚动样式设置
        /// </summary>
        [
       System.ComponentModel.Description("滚动样式设置")
       , System.ComponentModel.Category("滚动条设置")
       , System.ComponentModel.DefaultValue("")
       , System.ComponentModel.Bindable(System.ComponentModel.BindableSupport.Yes)
       ]
        public string ScrollCssClass
        {
            get { return _ScrollCssClass; }
            set { _ScrollCssClass = value; }
        }

        #region 书写标签
        void WriteBeginSpan(HtmlTextWriter writer)
        {
            if (this._ShowScrollBar)
            {
                StringBuilder strSpan = new StringBuilder();
                strSpan.Append("<span ");
                strSpan.Append(string.Format("style='overflow-y:{0};overflow-x:{1};",
                    System.Enum.GetName(typeof(Overflow), this._OverflowY),
                    System.Enum.GetName(typeof(Overflow), this._OverflowX)));
                if (this._ScrollHeight.ToString() != "0px")
                {
                    strSpan.Append(string.Format("height:{0};", this._ScrollHeight));
                }
                if (this._ScrollWidth.ToString() != "0px")
                {
                    strSpan.Append(string.Format("width:{0};", this._ScrollWidth));
                }
                strSpan.Append("';");
                if (!string.IsNullOrEmpty(_ScrollCssClass))
                {
                    strSpan.Append(string.Format(" class='{0}'", _ScrollCssClass));
                }
                strSpan.Append(">");
                writer.Write(strSpan.ToString());
            }
        }
        void WriteEndSpan(HtmlTextWriter writer)
        {
            if (this._ShowScrollBar)
            {
                writer.Write("</span>");
            }
        }
        #endregion
        #endregion
重写Render方法:
protected override void Render(HtmlTextWriter writer)
        {
            this.WriteBeginSpan(writer);
            base.Render(writer);
            this.WriteEndSpan(writer);
        }

就这样就可以了。
还要定义一个枚举:
public enum Overflow
    {
        auto = 0,
        hidden = 1,
        scroll = 2,
        visible = 3,
        inherit = 4
    }

Tag标签: 控件
posted on 2008-04-18 16:40 小朱 阅读(1251) 评论(5)  编辑 收藏 网摘

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-04-19 09:24 编辑过
Google站内搜索

相关文章:


相关搜索:
控件

相关链接: