日期:2009-12-21  浏览次数:20947 次

下面说下怎么创建带事件的用户控件:

  标准的WEB空间有事件,来进行交互,同样用户控件也有。

  要创建一个带事件的用户控件很简单,只需要三步:

  1.定义个公开的(public) 的事件委托,如ClickEventHandler

  2.在用户控件类中定义引发事件的方法,如OnClick方法

  3.在引发事件的方法中判断事件是否为空,如果不为空,就可以写事件出来代码了。

  下面我们来一步一步实现,

  1.创建一个用户控件文件--LinkClick.ascx.

  2.从工具箱中拖入LinkButton控件。


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LinkClick.ascx.cs" Inherits="Sample9_2.UC.linkClick" %>
<asp:LinkButton ID="LinkButton1" runat="server" >点击我</asp:LinkButton>
  3.在LinkClick.ascx.cs后置代码中定义单击事件的委托


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->public event EventHandler myClickEventHandler;
  4.添加LinkButton控件的单击事件代码如下:


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->protected void LinkButton1_Click(object sender, EventArgs e)
        {
            if (myClickEventHandler != null) {
                myClickEventHandler(this, EventArgs.Empty);
            }
        }
  5.在Default.aspx,中拖入刚才的用户控件


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><uc1:LinkClick ID="LinkClick1" runat="server"/>
  6.在工具箱中拖入Lable控件,我们将要做当点击用户控件的LinkButton,让Lable显示内容。


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->   <asp:Label ID="Label1" runat="server"></asp:Label>
  7.在用户控件中添加用户控件事件句柄,


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->  <uc1:LinkClick ID="LinkClick1" runat="server" OnmyClickEventHandler="LinkClick1_OnClick"/>
  8.打开文件,Default.aspx.cs ,在里面添加事件出来函数LinkClick1_OnClick的定义代码

  代码如下,(当用户单击控件LinkClick,则引发该事件,在Lablel控件中显示相应文字)。


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->protected void LinkClick1_OnClick(object sender, EventArgs e)
        {
            this.Label1.Text = "单击我";
        }
  这样一个带事件的用户控件就好了。运行试试。