林子之大.net笔记

本站多数文章由其它网址转载,没啥技术含量的皆为原创。主要目的是对付记性不好,方便查询。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
这是开发中遇到的问题。
为了达到以后重用,我设计了一个带有事件的页面类。可以对页面所有控件进行遍历。
通过订阅类事件来实现遍历所实现的功能。
页面类如下: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;可以在这里做些什么
        }
    }

posted on 2008-01-25 10:23  林614  阅读(559)  评论(0)    收藏  举报