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