ユーザーコントロールイベントと呼び出しページのインタラクションの使用
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
Test.aspx.cs
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;
}