遍历页面所有控件(原)

这是开发中遇到的问题。
为了达到以后重用,我设计了一个带有事件的页面类。可以对页面所有控件进行遍历。
通过订阅类事件来实现遍历所实现的功能。
页面类如下:PageHelper.cs

 /// <summary>
    ///
    /// </summary>
    /// <param name="contr"></param>
    public delegate void PageDelegate(System.Web.UI.Control contr);
    /// <summary>
    ///
    /// </summary>
    public class PageHelper
    {
        #region 构造函数
        /// <summary>
        ///
        /// </summary>
        /// <param name="page"></param>
  public PageHelper(Page page)
        {
            this.page = page;
        }
        /// <summary>
        ///
        /// </summary>
        private PageHelper(){}
     #endregion

        #region 私有字段
        /// <summary>
        ///
        /// </summary>
        private Page page;
        #endregion

        #region 私有方法
        /// <summary>
        ///
        /// </summary>
        /// <param name="contr"></param>
        private void TraversePageControls(System.Web.UI.Control contr)
        {
            if (contr.HasControls())
            {
                foreach (System.Web.UI.Control objCon in contr.Controls)
                {
                    TraversePageControls(objCon);
                }
            }
            OnTraverse(contr);
        }
     #endregion

        #region 公有方法
        /// <summary>
        ///
        /// </summary>
  public event PageDelegate OnTraverse;

        /// <summary>
        /// 遍历页面所有控件
        /// </summary>
        public void Traverse()
        {
            if (page.HasControls())
            {
                foreach (System.Web.UI.Control contr in page.Controls)
                {
                    TraversePageControls(contr);
                }
            }
           
        }
     #endregion
    }

调用如下:

 PageHelper helper = new PageHelper(Page);
        helper.OnTraverse += new PageDelegate(helper_OnTraverse);
        helper.Traverse();

helper_OnTraverse的实现如下:
 void helper_OnTraverse(Control contr)
    {
        if (contr is Button)
        {
            Button btn = contr as Button;
            //btn.Visible = isVisble;可以在这里做些什么
        }
    }

转载于:https://www.cnblogs.com/lin614/archive/2008/01/25/1052628.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值