VS.NET中事件丢失的避免方法
在vs.net中经常遇到事件丢失的问题,可以这样避免一下
方法一:
把InitializeComponent中的注册事件,如下

private void InitializeComponent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load);
}
剪切到override protected void OnInit(EventArgs e)里面,如下
override protected void OnInit(EventArgs e)
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
方法二:
把InitializeComponent中的注册事件,如下
private void InitializeComponent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
剪切到你的自定义方法中
private void LoadEvent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
然后在pageload中调用自定义方法就可以了,如
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
LoadEvent();
}
}
每次需要注册方法时,就在刚才的剪切区注册就可以了,这样虽然麻烦一些,但是可以保证事件不会丢失。
摘自 : http://blog.youkuaiyun.com/jelink/archive/2006/09/23/1269751.aspx
在vs.net中经常遇到事件丢失的问题,可以这样避免一下
方法一:
把InitializeComponent中的注册事件,如下

private void InitializeComponent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load);
}剪切到override protected void OnInit(EventArgs e)里面,如下
override protected void OnInit(EventArgs e)
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}方法二:
把InitializeComponent中的注册事件,如下
private void InitializeComponent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}剪切到你的自定义方法中
private void LoadEvent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}然后在pageload中调用自定义方法就可以了,如
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
LoadEvent();
}
}每次需要注册方法时,就在刚才的剪切区注册就可以了,这样虽然麻烦一些,但是可以保证事件不会丢失。
摘自 : http://blog.youkuaiyun.com/jelink/archive/2006/09/23/1269751.aspx
本文提供两种有效方法来解决VS.NET中常见的事件丢失问题。一种是将事件注册从InitializeComponent方法移动到OnInit方法中;另一种是在自定义方法中注册事件,并在Page_Load中调用该方法。

1178

被折叠的 条评论
为什么被折叠?



