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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-02-27
  • 2021-09-30
猜你喜欢
  • 2021-11-21
  • 2021-12-02
  • 2021-12-01
  • 2022-12-23
  • 2021-10-19
  • 2021-09-02
  • 2022-01-09
相关资源
相似解决方案