用户控件使用事件与调用页面交互

1.定义事件参数类

using System;

 

namespace ASPNetCookbook.CSExamples

{

/// <summary>

/// This class provides the definition of the custom event arguments used

/// as the event arguments for the message sent from this control. This

/// class simply inherits from System.EventArgs and adds a message property.

/// </summary>

public class MessageEventArgs

{

private String mMessage;

 

    /// <summary>

    /// This property provides the ability to get/set the message in the

    /// event args

    /// </summary>

    public String message

    {

     get

     {

        return (mMessage);

     }

 

     set

     {

     mMessage = value;

     }

    } // message

} // MessageEventArgs

}

2.定义控件代码

Test.ascx

<asp:Button ID="btnSendMessage" runat="server"

               Text="Send Message"

               OnClick="btnSendMessage_Click" />

 

Text.ascx.cs

using System;

 

namespace ASPNetCookbook.CSExamples

{

    /// <summary>

    /// This class provides the code-behind for

    /// CH05UserControlCommSourceCS.ascx

    /// </summary>

    public partial class CH05UserControlCommSourceCS : System.Web.UI.UserControl

    {

      // define the delegate handler signature and the event that will be raised 

     // to send the message 

     public delegate void customMessageHandler(Object sender, 

                                    MessageEventArgs e); 

     public event customMessageHandler OnSend;

			

 

 

      ///***********************************************************************

      /// <summary>

      /// This routine provides the event handler for the send message button

      /// click event. It creates a new MessageEventArgs object then raises

      /// an OnSend event

      /// </summary>

      ///

      /// <param name="sender">Set to the sender of the event</param>

      /// <param name="e">Set to the event arguments</param>

      protected void btnSendMessage_Click(object sender, 

                                        EventArgs e) 

     { 

     MessageEventArgs messageArgs = new MessageEventArgs(); 

        messageArgs.message = "This message came from the source user control"; 

 

        if (OnSend != null) 

        { 

         OnSend(this, messageArgs); 

        } 

     } // btnSendMessage_Click

			

   }  // CH05UserControlCommSourceCS

}

调用页面调用

 

Test.aspx

 

<asp:lable id="labMessage" runat="server"/>

<table width="60%" align="center" border="0">

          <tr>

            <td class="PageHeading">

              Source User Control:

            </td>

          </tr>

      <tr>

         <td bgcolor="#ffffcc" align="center" height="75">

             <ASPCookbook:SourceControl id="ucSource" runat="server" />

			

         </td>

      </tr>

</table>

 

Test.aspx.cs

 

protected void Page_Load(object sender, EventArgs e)

    {

//在调用页面中挂接控件事件      

ucSource.OnSend +=

  new CH05UserControlCommSourceCS.customMessageHandler(this.updateLabel);

    }

 

private void updateLabel(Object sender, 

                    MessageEventArgs e) 

    { 

    // update the label with the message in the event arguments 

    labMessage.Text = e.message; 

    }

			

 

 

你可能感兴趣的:(用户)