欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

在asp.net用户控件中实现自定义事件

创建时间:2011年11月28日 11:35  阅读次数:(5906)
分享到:
下面的示例展示如果为用户控件中的RadioButtonList控件开放自定义事件。

public partial class SDGroupPanel : System.Web.UI.UserControl
{
//先在用户控件中定义一个RadioButtonList控件
private RadioButtonList sortRadioList = new RadioButtonList();

//然后声明一个事件,开放给使用者
private object sortObject = new object();
/// <summary >
/// 自定义排序事件
/// </summary >
public event EventHandler SortEventHander
{
add { base.Events.AddHandler(sortObject, value); }
remove { base.Events.RemoveHandler(sortObject, value); }
}

然后在用户控件的CreateChildControls事件中将RadioButtonList控件添加到用户控件中。
protected override void CreateChildControls()
{
sortRadioList.ID = "sort_radiolist";
sortRadioList.Items.Add(new ListItem("降序", "0"));
sortRadioList.Items.Add(new ListItem("升序", "1"));
sortRadioList.RepeatDirection =RepeatDirection.Horizontal;
sortRadioList.RepeatLayout = RepeatLayout.Flow;
sortRadioList.AutoPostBack = true;

if (base.Events[sortObject] != null)
{
EventHandler ev = base.Events[sortObject] as EventHandler;
this.sortRadioList.SelectedIndexChanged += ev;
}


this.Controls.Add(sortRadioList);
}
}

上面代码中的加粗代码为重点,我们先判断使用者有没有给SortEventHander赋值,如果有,则将该事件添加到sortRadioList的SelectedIndexChanged事件集中。

注意自定义排序事件处:我们也可以用public event EventHandler SortEventHander来简单的定义事件,但我们知道,任何事件的创建都是需要消耗一定资源,而在复杂的富控件中,往往会定义大量的事件开放给使用者,如果都是这样简单的来定义,那么就会耗用大理系统资源,尽管这些事件使用者都没有使用到,而通过base.Events.AddHandler来添加事件,就是将事件的创建与耗毁都交给Events事件来处理,也就是只有在事件被使用的时候才会被创建。

重要:如果想用户在点击sortRadioList的选择项时触发SortEventHander事件,那么我们一定要在调用页面的Page_Load事件真正结束前,将SortEventHander事件添加到sortRadioList的SelectedIndexChanged事件的委托链中。这样,调用页定义的SortEventHander事件才会触发。所以我们选择在CreateChildControls事件中将SortEventHander事件添加到sortRadioList的SelectedIndexChanged事件的委托链中,因为CreateChildControls事件会在Page_Load事件之前发生。

调用页的使用代码:
在调用页的OnInit事件中,将用户自定义的GroupPanel_SortEventHander事件通过委托添加到SingleMaster.GroupPanel.SortEventHander事件中。

protected override void OnInit(EventArgs e)
{
SingleMaster.GroupPanel.SortEventHander += new EventHandler(GroupPanel_SortEventHander);
}

/// <summary >
/// 点击排序按钮后事件
/// </summary >
/// <param name="sender" ></param >
/// <param name="e" ></param >
protected virtual void GroupPanel_SortEventHander(object sender, EventArgs e)
{
}


本章仅是讲解了如何在asp.net用户控件中实现自定义事件的解题思路,供新手参考。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 90+15=? 的结果(结果是:105)
结  果: