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

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;

    }
			

 

 

原文地址:https://www.cnblogs.com/yg_zhang/p/835383.html