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

帐户 自由港1

类别 [选择一个类别或键入一个新类别] ; [选择一个类别或键入一个新类别] ; [选择一个类别或键入一个新类别]

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;
       }
posted on 2007-07-29 16:07  自由港  阅读(295)  评论(0编辑  收藏  举报