为CheckBoxList和RadioButtonList添加滚动条的方法技巧

为CheckBoxList和RadioButtonList添加滚动条的方法技巧

如何给CheckBoxList和RadioButtonList添加滚动条?
继承基类CheckBoxListRadioButtonList,添加滚动属性,重写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
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持路饭。