我自己看msdn上的解释看的很糊涂,希望能分别给我举个可以运行的例子(嫌麻烦可以将我下面提供的代码改编一下也行的)test.aspx<%@ Page Language="c#"%>
<%@ Register TagPrefix="my" Assembly="test" Namespace="test"%>
<html>
<head>
<script Runat="server" Language="c#">
void oSimpleButton_Click(object sender,EventArgs e){
label.Text="success!";
}
</script>
</head>
<body>
<form Runat="server" ID="oForm">
<my:SimpleButton Text="SimpleButton" Runat="server"  OnClick="oSimpleButton_Click" ID="oSimpleButton"/>
<br/>
<asp:Label Runat="server" ID="label"/>
</form>
</body>
</html>test.dllusing System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace test{
public class SimpleButton:WebControl,IPostBackEventHandler{ public event EventHandler Click; public virtual string Text{
get{
object oText = ViewState["Text"];
return ( oText == null ) ? String.Empty : ( string ) oText;
}
set{
ViewState["Text"] = value;
}
} public virtual void OnClick ( EventArgs e ){
if( Click != null ){
Click( this , e );
}
}  void IPostBackEventHandler.RaisePostBackEvent ( string eventArgument ){
OnClick ( EventArgs.Empty );
} protected override HtmlTextWriterTag TagKey{
get{
return HtmlTextWriterTag.Input;
}
} protected override void AddAttributesToRender ( HtmlTextWriter writer ){
base.AddAttributesToRender ( writer );
writer.AddAttribute( HtmlTextWriterAttribute.Type , "submit" );
writer.AddAttribute( HtmlTextWriterAttribute.Value , Text );
writer.AddAttribute(HtmlTextWriterAttribute.Name,UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Id,ClientID);
} protected override void Render ( HtmlTextWriter writer ){
if( Page != null ){
Page.VerifyRenderingInServerForm(this);
}
base.Render(writer);
} protected override void OnPreRender(EventArgs e){
base.OnPreRender(e);

}
}
}

解决方案 »

  1.   

    将 ASP.NET 服务器控件注册为需要在 Page 上处理控件时引发事件的控件。
    [Visual Basic]
    Public Overridable Sub RegisterRequiresRaiseEvent( _
       ByVal control As IPostBackEventHandler _
    )
    [C#]
    public virtual void RegisterRequiresRaiseEvent(
       IPostBackEventHandler control
    );
    [C++]
    public: virtual void RegisterRequiresRaiseEvent(
       IPostBackEventHandler* control
    );
    [JScript]
    public function RegisterRequiresRaiseEvent(
       control : IPostBackEventHandler
    );
    参数
    control 
    要注册的控件。 
    备注
    每个 Page 请求只能注册一个服务器控件。
    示例
    [Visual Basic, C#] 此示例使用 RegisterRequiresRaiseEvent 方法将 Button Web 服务器控件注册为要求引发事件。一旦注册了第一个 Button,就可以使代码中声明的第二个 Button 将第一个按钮的单击事件的结果发送到页。
    [Visual Basic] 
    Sub DisplayUserName(Sender As Object, e As EventArgs) 
       Response.Write("Welcome to " + userName.Text)
    End Sub       Sub MyRaiseEvent(Sender As Object, e As EventArgs)
       'Raises a post back event for a control.
        Me.RaisePostBackEvent(userButton, "")
           End Sub Sub Page_Load(Sender As Object, e As EventArgs)
        
      'Registers a control as one that requires postback handling
      Me.RegisterRequiresRaiseEvent(userButton)
          End Sub
    [C#] 
    void DisplayUserName(Object sender, EventArgs ea) 
    {
       Response.Write("Welcome to " + userName.Text);
    }
    void RaiseEvent(Object sender, EventArgs ea)
    {
       // Raise a post back event for a control.
       this.RaisePostBackEvent(userButton, "");
    }
    void Page_Load(Object sender, EventArgs ea)
    {
       // Register a control as one that requires postback handling.
       this.RegisterRequiresRaiseEvent(userButton);
    }
      

  2.   

    RegisterRequiresPostBack为注册控件为提交事件控件(类似asp:Button控件)
    RegisterRequiresRaiseEvent为事件的冒泡,即注册事件能在父级中进行处理(类似Repeater中ItemCommand事件可以处理ItemTemplate模板中的子控件事件)
      

  3.   

    RegisterRequiresRaiseEvent:将 ASP.NET 服务器控件注册为需要在 Page 上处理控件时引发事件的控件。RegisterRequiresPostBack:将控件注册为需要回发处理的控件。
    RaisePostBackEvent:通知引起回发的服务器控件:它应处理进入的回发事件。void DisplayUserName(Object sender, EventArgs ea) 
    {
       Response.Write("Welcome to " + Server.HtmlEncode(userName.Text));
    }
    void RaiseEvent(Object sender, EventArgs ea)
    {
       // Raise a post back event for a control.
       this.RaisePostBackEvent(userButton, "");
    }
    void Page_Load(Object sender, EventArgs ea)
    {
       // Register a control as one that requires postback handling.
       this.RegisterRequiresRaiseEvent(userButton);
    }void DisplayUserName(Object sender, EventArgs ea) 
    {
       Response.Write("Welcome to " + Server.HtmlEncode(userName.Text));
    }
    void RaiseEvent(Object sender, EventArgs ea)
    {
       // Raise a post back event for a control.
       this.RaisePostBackEvent(userButton, "");
    }
    void Page_Load(Object sender, EventArgs ea)
    {
       // Register a control as one that requires postback handling.
       this.RegisterRequiresRaiseEvent(userButton);
    }
      

  4.   

    有没有除了msdn外另外的例子提供。