关于Asp.net中自定义事件,望高人指教,小弟不胜感激!!!!!!!
页面1:Sender.aspx
namespace CustomEventSample
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class Sender : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.LinkButton LinkButton1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
info info = new info();
info.ShowMessage+=new ShowMessageHandler(info_ShowMessage);
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void LinkButton1_Click(object sender, System.EventArgs e)
{
string url = "<script>window.open('info.aspx')</script>";
this.Page.RegisterClientScriptBlock("onclick",url);
}
private void info_ShowMessage(object sender, EventArgs e)
{
this.Label1.Text = "OK";
}
}
}
页面2: info.aspx
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public delegate void ShowMessageHandler(object sender,System.EventArgs e);
namespace CustomEventSample
{
/// <summary>
/// info 的摘要说明。
/// </summary>
public class info : System.Web.UI.Page
{
protected System.Web.UI.WebControls.LinkButton LinkButton1;
public event ShowMessageHandler ShowMessage;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
if(ShowMessage != null)
ShowMessage(sender,e);
string js = "<script>window.close()</script>";
this.Page.RegisterClientScriptBlock("onclick",js);
}
我希望在sender.aspx页面监听到info.aspx页showmessage事件,从而执行sender页的info_showmessage函数
不知道我的委托是否定义正确了?
好像没有错吧
为什么在info.aspx中 if(ShowMessage != null)这个判断条件恒为false呢?
是不是因为页面在转向后对象以销毁?
望各位大哥指点一二,谢谢谢谢!!!