ユーザーコントロールイベントと呼び出しページのインタラクションの使用

5721 ワード

1.イベントパラメータクラスの定義
using System;
 
namespace ASPNetCookbook.CSExamples
{
///
///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.
///

public class MessageEventArgs
{
private String mMessage;
 
    ///
    ///This property provides the ability to get/set the message in the
    ///event args
    ///

    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; 
    }